{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "85aefede",
   "metadata": {},
   "source": [
    "# EDA of x5 dataset for Retail Hero competition"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a5f82872",
   "metadata": {},
   "source": [
    "The dataset is provided by X5 Retail Group at the RetailHero hackaton hosted in winter 2019."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1de7a7de",
   "metadata": {},
   "source": [
    "## Data loading"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "24dc9d37",
   "metadata": {},
   "source": [
    "Let's download the data. We will use standard [fetch funnction](https://www.uplift-modeling.com/en/latest/api/datasets/fetch_x5.html#x5-retailhero-uplift-modeling-dataset)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "26f40fb1",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklift.datasets import fetch_x5\n",
    "import pandas as pd\n",
    "import numpy as np \n",
    "import plotly.express as px\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklift.metrics import uplift_at_k\n",
    "from sklift.models import SoloModel\n",
    "from catboost import CatBoostClassifier\n",
    "\n",
    "pd.set_option('display.float_format', lambda x: '%.3f' % x)\n",
    "\n",
    "dataset = fetch_x5()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d5a07d8e",
   "metadata": {},
   "source": [
    "dataset object is iterable dictionary-like object. \n",
    " Let's make a brief look at what we have here."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "213d1a1b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict_keys(['data', 'target', 'treatment', 'DESCR', 'feature_names', 'target_name', 'treatment_name'])"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataset.keys()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "5faf7ad6",
   "metadata": {},
   "outputs": [],
   "source": [
    "### data has 3 datasets\n",
    "datasets_data = dataset['data']\n",
    "\n",
    "### clients data\n",
    "clients = datasets_data['clients']\n",
    "\n",
    "### train data\n",
    "train = datasets_data['train']\n",
    "\n",
    "### purchases\n",
    "purchases = datasets_data['purchases']\n",
    "\n",
    "### Let's look at other dataset objects\n",
    "\n",
    "### treatment feature: \n",
    "## 1 - mean there was an interaction with customer; 0 - no interaction\n",
    "\n",
    "treatment = dataset['treatment']\n",
    "\n",
    "### target feature\n",
    "\n",
    "target = dataset['target']"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0782dfc3",
   "metadata": {},
   "source": [
    "## EDA "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b3941d8b",
   "metadata": {},
   "source": [
    "### Clients "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3334fc5a",
   "metadata": {},
   "source": [
    "Clients dataset consist of general information about customers."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "fab5aca3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>client_id</th>\n",
       "      <th>first_issue_date</th>\n",
       "      <th>first_redeem_date</th>\n",
       "      <th>age</th>\n",
       "      <th>gender</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>000012768d</td>\n",
       "      <td>2017-08-05 15:40:48</td>\n",
       "      <td>2018-01-04 19:30:07</td>\n",
       "      <td>45</td>\n",
       "      <td>U</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>000036f903</td>\n",
       "      <td>2017-04-10 13:54:23</td>\n",
       "      <td>2017-04-23 12:37:56</td>\n",
       "      <td>72</td>\n",
       "      <td>F</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>000048b7a6</td>\n",
       "      <td>2018-12-15 13:33:11</td>\n",
       "      <td>NaN</td>\n",
       "      <td>68</td>\n",
       "      <td>F</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>000073194a</td>\n",
       "      <td>2017-05-23 12:56:14</td>\n",
       "      <td>2017-11-24 11:18:01</td>\n",
       "      <td>60</td>\n",
       "      <td>F</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>00007c7133</td>\n",
       "      <td>2017-05-22 16:17:08</td>\n",
       "      <td>2018-12-31 17:17:33</td>\n",
       "      <td>67</td>\n",
       "      <td>U</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    client_id     first_issue_date    first_redeem_date  age gender\n",
       "0  000012768d  2017-08-05 15:40:48  2018-01-04 19:30:07   45      U\n",
       "1  000036f903  2017-04-10 13:54:23  2017-04-23 12:37:56   72      F\n",
       "2  000048b7a6  2018-12-15 13:33:11                  NaN   68      F\n",
       "3  000073194a  2017-05-23 12:56:14  2017-11-24 11:18:01   60      F\n",
       "4  00007c7133  2017-05-22 16:17:08  2018-12-31 17:17:33   67      U"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clients.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "176b5003",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(400162, 5)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clients.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "53f12089",
   "metadata": {},
   "source": [
    "Let's look at variables in clients dataset in more detail:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "bed12163",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count   400162.000\n",
       "mean        46.488\n",
       "std         43.871\n",
       "min      -7491.000\n",
       "25%         34.000\n",
       "50%         45.000\n",
       "75%         59.000\n",
       "max       1901.000\n",
       "Name: age, dtype: float64"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### age variable \n",
    "\n",
    "clients['age'].describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2efaaa80",
   "metadata": {},
   "source": [
    "Seems like we have some outliers in data. Let's simply remove them using quantile values."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "d839baa4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAArwAAAH0CAYAAADfWf7fAAAgAElEQVR4Xu3dCbhV4+LH8d85p3mQEHL9uVwyJVeGLupyzRERuiVzaNJ0lIjmebgNGo8IRZIhQpGbqRspylhSuLq6hUQaT8M5/2ctObfTtNbe73rXXnvt73me//O/Out911qf993nfNvts09WYWFhofhAAAEEEEAAAQQQQCCmAlkEb0xXlttCAAEEEEAAAQQQcAUIXjYCAggggAACCCCAQKwFCN5YLy83hwACCCCAAAIIIEDwsgcQQAABBBBAAAEEYi1A8MZ6ebk5BBBAAAEEEEAAAYKXPYAAAggggAACCCAQawGCN9bLy80hgAACCCCAAAIIELzsAQQQQAABBBBAAIFYCxC8sV5ebg4BBBBAAAEEEECA4GUPIIAAAggggAACCMRagOCN9fJycwgggAACCCCAAAIEL3sAAQQQQAABBBBAINYCBG+sl5ebQwABBBBAAAEEECB42QMIIIAAAggggAACsRYgeGO9vNwcAggggAACCCCAAMHLHkAAAQQQQAABBBCItQDBG+vl5eYQQAABBBBAAAEECF72AAIIIIAAAggggECsBQjeWC8vN4cAAggggAACCCBA8LIHEEAAAQQQQAABBGItQPDGenm5OQQQQAABBBBAAAGClz2AAAIIIIAAAgggEGsBgjfWy8vNIYAAAggggAACCBC87AEEEEAAAQQQQACBWAsQvLFeXm4OAQQQQAABBBBAgOBlDyCAAAIIIIAAAgjEWoDgjfXycnMIIIAAAggggAACBC97AAEEEEAAAQQQQCDWAgRvrJeXm0MAAQQQQAABBBAgeNkDCCCAAAIIIIAAArEWIHhjvbzcHAIIIIAAAggggADByx5AAAEEEEAAAQQQiLUAwRvr5eXmEEAAAQQQQAABBAhe9gACCCCAAAIIIIBArAUI3lgvLzeHAAIIIIAAAgggQPCyBxBAAAEEEEAAAQRiLUDwxnp5uTkEEEAAAQQQQAABgpc9gAACCCCAAAIIIBBrAYI31svLzSGAAAIIIIAAAggQvOwBBBBAAAEEEEAAgVgLELyxXl5uDgEEEEAAAQQQQIDgZQ8ggAACCCCAAAIIxFqA4I318nJzCCCAAAIIIIAAAgQvewABBBBAAAEEEEAg1gIEb6yXl5tDAAEEEEAAAQQQIHjZAwgggAACCCCAAAKxFiB4Y7283BwCCCCAAAIIIIAAwcseQAABBBBAAAEEEIi1AMEb6+Xl5hBAAAEEEEAAAQQIXvYAAggggAACCCCAQKwFCN5YLy83hwACCCCAAAIIIEDwsgcQQAABBBBAAAEEYi1A8MZ6ebk5BBBAAAEEEEAAAYKXPYAAAggggAACCCAQawGCN9bLy80hgAACCCCAAAIIELzsAQQQQAABBBBAAIFYCxC8sV5ebg4BBBBAAAEEEECA4GUPIIAAAggggAACCMRagOCN9fJycwgggAACCCCAAAIEr+Ee+O9PmwxnYDgCCCCAAAIIZLrAYQeWzXQCq/dP8BryEryGgAxHAAEEEEAAARG8djcBwWvoS/AaAjIcAQQQQAABBAhey3uA4DUEJngNARmOAAIIIIAAAgSv5T1A8BoCE7yGgAxHAAEEEEAAAYLX8h4geA2BCV5DQIYjgAACCCCAAMFreQ8QvIbABK8hIMMRQAABBBBAgOC1vAcIXkNggtcQkOEIIIAAAgggEJngXfLVf7R9+3adWO2Pnqvy3gefa8KzMzWmf/u9HpvbfZSuvPgcnXf2nz3ns3kAwWuoS/AaAjIcAQQQQAABBCITvPf3f1i/rtugEX3aeq7K9Fnvq9+IJzT7hRF7PfaSxh3V7MYr1OCyv3rOZ/MAgtdQl+A1BGQ4AggggAACCEQmeNeu26CCggJVrlTRc1UIXk+i+BxA8MZnLbkTBBBAAAEEUiWQ6C+eWPbNCrXp8qBG9W2no46oWnTZA0Y9pc35W9Qt92ZNnTFbk194Q18vX6kqB1ZSkwYXqUmDC91j337vY818e74u/VstDX/4WS1e+q0+ePUhPTp5ujs+t1lD97h9zeEE7+Cxk3X79fU0+YVZ+nntOtWqeaI6t7lBB+z/WzDv+gzvp4u/1sDRk/XFsuU68vBD1Pq2Bjr3rFOss/MMryExwWsIyHAEEEAAAQQQSPgZ3oKCQtVtco+uqltbLW6q7wpu3JSvM+o2U9/77lD9S87RpKmztGHjJp1W4zgt+PRLDX3oGc16ZogOrXKAnFjtNvhRlSldUo2vukA1T66mv5x2onoMeVybNuerf+c73Tm95ujYa4z+dORhurVRXW3fXqBxT76sgw+qrIkjOu8WvCt/WKMLG+bqqktrq96FZ+mNOQvc+V94tLeOPepwq7uA4DXkJXgNARmOAAIIIIAAAgkHr0M2dsI09xnYVycNVFZWll57a55yu4/W+6+MUYXyZYupFhYW6q9Xt1G7O67TNZf/1Q1eJ1adsL3i4rOLjt01eHeeZG9zvDyhX9GzzG++u1B3dR6uaY/3dUN452d4h417Vs+98rbefG6YSuTkyIn2Wpe3cJ91bnfHtVZ3AcFryEvwGgIyHAEEEEAAAQSSCt7lK35wn+V9Oq+bqh93lFrfP1zly5ctenb2m+Ur9epb8/Tv/6zS2l/X68NPlqrVrVfploaXFgXvey+P1n4Vyu01eP3M8flbjxWNX71mrc5t0Faj+7V3X6qwc/A61zd3wWKdfspxRcd/8PES1alVQ0O6t7S6CwheQ16C1xCQ4QgggAACCCCQVPA6bDe27qtTTvqT7mhST2df0UoPD+6os04/SR9+8qVuatNXF9SpqbNPr66jjzhMXQY+osZXX1AUvHt6h4Wdn+H1M4fzLPHOwev80JtzHc67PJx/zqnFgvfOjoO15pd17ssfdv5wXmJxWo1qVncBwWvIS/AaAjIcAQQQQAABBJIOXuclDUPyprg/ZOb8/99fLuCE67vzP9P0JwYoJyfb/YGy2vVbq2PLRr6D188cTvC++ewwHXzQ/u4qzpn/mZywfXZcD51w7JHFgrfvg09o6ox/6b2XR7kvaQjzg+A11CZ4DQEZjgACCCCAAAJJB++v6zfqrHot3XdFuObyc4teC/vk8/+U85pZ5wfCtmzZqvGTZ+j56e8kFLx+5nCC1/mlEs1vvFJ/qFpFzvv4rlj5o154tI+ys7OKBa/zSy0aNO2ia+udq0b1z1f5cmX02Rf/VrWjD9cxR/3B6i4geA15CV5DQIYjgAACCCCAQNLB69B16pOnl19/T9Me66M//fG3cHSe0b2v70Oa/f6n7n9fXbeO+/66xx1zhG6+7hL3NbxeL2nwM8cLr852Q3fKtDfd8zg/qDake6uigHVew9v8pivd8zsfb/xrgXoPn6jvf/zZ/e9yZctodL92OuPPx1vdBQSvIS/BawiYhsO79iyxz6vu2XVbGt4Vl4wAAgggkEqBRN+H1++1rt+wSaVKllCpUiX9DtntOD9zOM8ib8rfokoVy/s6j/Na38KCQu1Xsbz7TLDtD4LXUJjgNQRMw+EEbxouGpeMAAIIRFzAVvBG/LZDuzyC15Ca4DUETMPhYQRvGOdIQ3ouGQEEEIitAMFrd2kJXkNfgtcQMGLDvULTz+UG8ZIGr+sI4hx+7oVjEEAAAQTCESB47ToTvIa+BK8hYMSGe4Wmn8sNIka9riOIc/i5F45BAAEEEAhHgOC160zwGvoSvIaAIQ/3CskgLieIGPW6ziDOEcS9MgcCCCCAQDACBG8wjnubheA19CV4DQFDHu4VkkFcThAx6nWdQZwjiHtlDgQQQACBYAQI3mAcCV5LjgSvJVhL03qFZBCnDSJGva4ziHMEca/MgQACCCAQjADBG4wjwWvJkeC1BGtpWq+QDOK0QcSo13UGcY4g7pU5EEAAAQSCEbAdvL+uk1auKvR9sfvtl6Wqh/g+PPIH8pIGwyUieA0BQx7uFZJBXE4QMep1nUGcI4h7ZQ4EEEAAgWAEbAfve/ML9MgT231f7FlnZKvpDTm+j4/6gQTvLivk/KYQ5+8/pXf6jSQrVq3WvIWLi34t3s5DCN6ob/Hi1+cVkkHcjVeMBnENXucI4j6YAwEEEEAgPAGC1641wbvDt6CgUN0GP6rnp7/j/l7n82ufqt6dblfJEjmau2CRhuY9o6fzuu22GgSv3Q0a9OxBxKbXNXnFaBDX4HUOr2vk8wgggAAC0RIgeO2uB8G7w3fhZ0t1f/+HNX5oJ1WuVFH39R2no444VK1va0Dw2t2Doc4eRGyGesF7ORnBG4VV4BoQQACB4ATiFLzOk4i9hk3QP9/5wAWqd9HZurt5Q5XIydHHi77Sw0++rLkLFqtihbIqWaKErq13ru5oUk9f/XuFug1+TE6T1Ty5mnp3aqojDw/mhcQE7469OmDUU6pYoZxa3lzf/ZPFS79V537jNHV872LBuzl/i9p3G6XaZ1ZXkwYXiWd4g3uwhzETwRuGMudAAAEEEEhUIE7B69z7SzPf1bFHH+6+RLR5pyHqc+/tOv2U43TtHd1047UXq+7fzpTTXj+vXa8h3Vu6XDfc1Ud/qXmirqpbW49PeVVrf92ggV2aJ0q5x+MJ3h0s4558WSt/WKOu7W9y/2TBp1/qxtZ99ekbj2reR4vdlzRMGt1FHXuNkZSlQV2aKycnm+ANZBuGNwnBG541Z0IAAQQQ8C8Qt+D9/c5/WP2LBo+Z7Mav80ThGXWb6Z9P/0NVDzlQM954XxOenamnRnfRL2vX65z6d2nGkwPcZ32X//cH3dZ+gD587SGVKV3KP+RejiR4d8B8s3yl6t10n5o2vkyHHnyg+zeL71b+qM/feqzoGd6aNappybLlGjsgV6V2/FDbpnz/P/FovFpMYCzQ+p4C4zmiMMGIgdlRuAyuIQuClAn4f3ellF0iJ0YgEYGype2+I0KY79KwfsMm9RvxpD74eIkOqLyfvv9xjRpe8Tc1v+lKN2KdPzv/nJpua11z+V/V8Mq/6Y1/LVDrBx7Un448rBjb6P7tdXjVKolQ8gyvl5bzbgzTZs5RTna2+5qR4Q8/p+lPDHCDt2nuQHe4E8S5zRoWTbVmXb7XtHw+QgL3PBCPUBzYOx7hHqGtkdylEF3JuQUxir9sBKHIHBESOKBiaatXE2bwPjzpFX34yZca3vMu9wnCNl0e1InH/tEN3jfmLFTvYRN01aW1VadWDZ1y4jHKzs4qaq2gntHdFZNnePeyvfImvuQ+w9vrntvcRXBezzu8Vxs1at7D/cG2Wqee4I7kNbxWH5+BT85LGgInZUIEEEAAgQAE4vSShi4Dx2u/CuXUsWUj92einNftOm8C4ARvbvfROrzqQbrm8nPdGK568AGu3rr1G3X+dbm6o8nluuGai9yXj3773SqdcOyRAehKBO8eGJ2n4FvcO1RPjLxfx/3p/4r90NrUGbM1JG+Kpj3e1303B4I3kH0Y2iQEb2jUnAgBBBBAIAGBOAXv50v+7f7M048/rdUB+1dU7TNP1sEHVdatf79U9/Z9SLPf/1RVDqzkft75/5NGddH+lSq4L4Fw3jHLecLR+XCeXHSeZAzig+Ddoej8zeKyG35Ddd6todvdtxQ9i7vr+/B26DlG+flbNKJPW4I3iF0Y4hwEb4jYnAoBBBBAwLdAnIL395v+df1G95ne3z+ee+Udvf7OfI3o0879PQfOh/ME41//UkONr7qg6DhnXImcbPf3IgT1QfDuJLlh42ZlZWWpXFn/r6PhGd6gtmI48xC84ThzFgQQQACBxARsB++iJYV6Zab/H7Q/8bhsXX5xsD/3Mn3W+5r43Ez3na6cmHWeCc7tPkqj+rbTmacenxhYgkcTvAmC7Xo4wWsIGPJwgjdkcE6HAAIIIOBLwHbw+roIywdt316gvCdect+RwXmDAOd9ec8+o7rOOaO65TPzGl5jYILXmDDUCQjeULk5GQIIIICAT4FMCF6fFFYO4xleQ1aC1xAw5OEEb8jgnA4BBBBAwJcAweuLKemDCN6k6X4bSPAaAoY8nOANGZzTIYAAAgj4EiB4fTElfRDBmzQdwWtIl5LhBG9K2DkpAggggICHAMFrd4sQvIa+PMNrCBjycII3ZHBOhwACCCDgS4Dg9cWU9EEEb9J0PMNrSJeS4QRvStg5KQIIIIAAz/CmdA8QvIb8PMNrCBjy8LgErxdbz67bvA7h8wgggAACERLgGV67i0HwGvoSvIaAIQ/PlOD1w+oVxV5WXuP9XAPHIIAAAgj8JkDw2t0JBK+hL8FrCBjycK+IC/lyUno6r2D1svIan9Kb4+QIIIBAmgkQvHYXjOA19CV4DQFDHu4VcSFfTkpP5xWsXlZe41N6c5wcAQQQSDMBgtfughG8hr4EryFgyMO9Ii7ky0np6byC1cvKa3xKb46TI4AAAmkmQPDaXTCC19CX4DUEDHm4V8SFfDkpPZ1XsHpZeY1P6c1xcgQQQCDNBAheuwtG8Br6EryGgCEP94q4kC8npafzClYvK6/xKb05To4AAgikmQDBa3fBCF5DX4LXEDDk4V4RF/LlpPR0XsHqZeU1PqU3x8nTVoB9l7ZLx4UbChC8hoAewwleQ1+C1xAw5OFe30xDvpyUns4rWL2svMan9OY4edoKsO/Sdum4cEMBgtcQkOC1C0jw2vUNenavb6ZBny/O8xG8cV7d1N2b12OUfZe6teHMdgUIXru+PMNr6EvwGgKGPNzrm2nIl5PWpyM80nr5InvxXo9R9l1kl44LMxQgeA0BeYbXLiDBa9c36Nm9vpkGfb44z0d4xHl1U3dvXo9R9l3q1oYz2xUgeO368gyvoS/BawgY8nCvb6YhX05an47wSOvli+zFez1G2XeRXTouzFCA4DUE5Bleu4AEr13foGf3+mYa9PniPB/hEefVTd29eT1G2XepWxvObFeA4LXryzO8hr4EryFgyMO9vpmGfDlpfTrCI62XL7IX7/UYZd9Fdum4MEMBgtcQkGd47QISvHZ9g57d65tp0OeL83yER5xXN3X35vUYZd+lbm04s10BgteuL8/wGvoSvIaAIQ/3+mYa8uWk9ekIj7RevshevNdjlH0X2aXjwgwFCF5DQJ7htQtI8Nr1DXp2r2+mQZ8vzvMRHnFe3dTdm9djlH2XurXhzHYFCF67vjzDu4tvQUGhtmzdqjKlSxV9ZsWq1Zq3cLGurltnt9UgeO1u0KBn9/pmGvT5Mn0+4iTTd8Du92/6GGRPsafiKkDw2l1Zgncn38Fjn9b0WXO1des2nXDskerR4VZVPeRAzV2wSEPzntHTed0IXrv70frspt9srV9gzE5AnMRsQQO4HdPHIHsqgEVgikgKELx2l4Xg3eH7yaKv1KrzML06aZDKlimt/iOfVE5Ojjq1akzw2t2Doc5u+s021IuNwcm84sRrPbzGx4Ao427Ba829QNgTXkJ8Pl0FCF67K0fw7vB974PP1WvYBL08ob+ys7M0dsI0rfphjbp3uKVY8G7O36L23Uap9pnV1aTBReIlDXY3aNCzm36zDfp6mG/fAsRN/HaI6WOQPRG/PcEd/SZA8NrdCQTvDt/8LVvVotMQFRQWqubJx+qVf87V2AG5OuqIqkXBO2l0F3XsNUZSlgZ1aa6cnGyC1+7+DHx202+2gV8QE+5TgLiJ3wYxfQyyJ+K3J7gjgjeMPUDw7qQ8dcZsPTDgEfdPrrj4bPc1vKVLlSwK3po1qmnJsuVuCJcqVdI97pcNW8JYp4w7R5alO767s62ZLV1whk/7j76FGS6QXrcfxuPLa0/4uQavOdJLnauNuoDfr2L7l//fD8tH/Z7S8foI3h2r9ta7H6nfiCc1bnAHlSldWj2GPOa+lndw1xZu8DbNHege2bTxZcpt1rBorTds2paO6x75a/b7BSLRG2l3r62ZE70SjvcjMKw/f0Hx4xSVY9Ll8cW+isqOyYzr8PtVrHzZEpkBkqK7JHh3wHcb/KgOPfgAtbipvvsny75Zofq33q+PZz2iDz5eos79xml4rzZq1LyHxg/tpFqnnuAex2t4U7Rzkzyt6T+nJnlahiUpwD9fJwmXomHp8vhiX6Vog3DafQrwGl67G4Tg3eH70sx39dz0dzS6X3v3ZQwTn5up+R99oVF92xX7oTXnZQ9D8qZo2uN9VblSRYLX7v5MePZ0+Yab8I1l6ADCJL0WPl0ef+yr9NpXmXK1BK/dlSZ4d/g6777Qe9hEvf3eR+6fVD/+aLVp2sB9P95d34e3Q88xys/fohF92hK8dvdnwrOnyzfchG8sQwcQJum18Ony+GNfpde+ypSrJXjtrjTBu4uv85vWnPgtV7a0L3le0uCLKbSD0uUbbmggaX4iwiS9FjBdHn/sq/TaV5lytQSv3ZUmeA19CV5DwICHp8s33IBvO7bTESbptbTp8vhjX6XXvsqUqyV47a40wWvoS/AaAgY8PF2+4QZ827GdjjBJr6VNl8cf+yq99lWmXC3Ba3elCV5DX4LXEDDg4enyDTfg247tdIRJei1tujz+2Ffpta8y5WoJXrsrTfAa+hK8hoABD0+Xb7gB33bGTke4RGvp0+Xxx76J1r7han4TIHjt7gSC19CX4DUEDHh4unzDDfi2M3Y6wiVaS58ujz/2TbT2DVdD8IaxBwheQ2WC1xAw4OHp8g034NvO2OkIl2gtfbo8/tg30do3XA3BG8YeIHgNlQleQ8AEhqfLN9MEbolDDQUIF0PAgIeny2OUfRPwwjNdIAK8pCEQxr1OQvAa+hK8hoAJDE+Xb6YJ3BKHGgoQLoaAAQ+Py2OUfRXwxmA6XwIEry+mpA8ieJOm+20gwWsImMDwuHwzTeCWOdRDgDCJ1haJy2OUfRWtfZUpV0Pw2l1pgtfQl+A1BExgeFy+mSZwyxxK8KbVHojLY5TgTattF5uLJXjtLiXBa+hL8BoCJjA8Lt9ME7hlDg1AgHgJANHnFHF5jLJnfC44hwUqQPAGyrnbZASvoS/BawiYwPC4fDNN4JY5NAAB4iUARJ9TxOUxyp7xueAcFqgAwRsoJ8EbNCfBG7To3ueLyzfT8MQ4kyNAvIS3D+LyGGXPhLdnONP/BAheu7uBZ3gNfQleQ8AEhsflm2kCt8yhAQgQLwEg7pgiUx6D7Jng9gwz+RcgeP1bJXMkwZuM2k5jCF5DwASGZ8o32wRIONSHAPHiA8nnIZnyGGTP+NwQHBaoAMEbKOdukxG8hr4EryFgAsMz5ZttAiQc6kOAePGB5POQTHkMsmd8bggOC1SA4A2Uk+ANmpPgDVp07/Nlyjfb8EQz40zES3DrnCmPQfZMcHuGmfwLELz+rZI5kmd4k1HbaQzBawiYwPBM+WabAAmH+hAgXnwg+TwkUx6D7BmfG4LDAhUgeAPl5BneoDkJ3qBFeYY3PNHMOBPxEtw6E7zBWTITArsKELx29wTP8Br6EryGgAkMz5RvtgmQcGgIAgTz/5Az5THImofwwOIUuwkQvHY3BcFr6EvwGgImMDxTvtkmQMKhIQgQPwRvCNuMUyAggtfuJiB4DX0JXkPABIYTvAlgcWhgAgQvwRvYZmIiBPYhQPDa3R4Er6EvwWsImMBwgjcBLA4NTIDgJXgD20xMhADBm7I9QPAa0hO8hoAJDCd4E8Di0MAECF6CN7DNxEQIELwp2wMEryE9wWsImMBwgjcBLA4NTIDgJXgD20xMhADBm7I9QPAa0hO8hoAJDCd4E8Di0MAECF6CN7DNxEQIELwp2wMErw/6FatWa97Cxbq6bp3djiZ4fQAGdAjBGxAk0yQkQPBmXvB6bRD2hJcQn09GgB9aS0bN/xiCd4fVbe0H6P2Fi3eTm/vyaH3+5b81NO8ZPZ3XjeD1v7cCP5LgDZyUCX0IEDcE767bhD3h44HDIQkLELwJkyU0gODdwbV123YVFBQU4b365jxNfHamnh3XQ3MXLCJ4E9pWdg4meO24Muu+BYgbgpfg5atEGAIEr11lgncvvn9v1kM3NbxEl1/wl2LBuzl/i9p3G6XaZ1ZXkwYXiZc02N2gO89O8IZnzZn+J5BJwctjzN/Oz6Q94U+Eo4IQIHiDUNz7HATvHmwWfLpUbbs8qFlThqhUqZJFwTtpdBd17DVGUpYGdWmunJxs/bg23+4KMXuRwH1ds9FAIJIC/Xr+71+HInmBPi+Kx5hPKB+HxWVP+LhVDglIoEql0gHNxDR7EiB496DSrutInXDskWp24xXuZ39/SUPNGtW0ZNlyjR2Q64aw87F1Wzy+0aXDw6PF3dvT4TK5xgwUGPOPnFjcNY+x4JYxLnsiOBFm8hIoWYIndbyMTD5P8O6it3zF96rbpJPefn64DjqgUlHwNs0d6P7vpo0vU26zhkWjeEmDyfZLbCz/3JqYF0eHJxCXf+LmMRbcnonLnghOhJm8BHhJg5eQ2ecJ3l38Box6SuvWb1TvTk2LPuM8w9u53zgN79VGjZr30PihnVTr1BPczxO8ZhswkdF8M05Ei2PDFIhL3PAYC27XxGVPBCfCTF4CBK+XkNnnCd6d/Nau26Czr2jlvjOD85KG3z92fpeGqTNma0jeFE17vK8qV6pI8Jrtv4RG8804IS4ODlEgLnHDYyy4TROXPRGcCDN5CRC8XkJmnyd4d/J7/JnX9M93PtTEEZ2Lqe76tmQdeo5Rfv4WjejTluA1238JjeabcUJcHByiQFzihsdYcJsmLnsiOBFm8hIgeL2EzD5P8Jr5EbyGfokM55txIlocG6ZAXOKGx1h4uyYueyY8sfifieC1u8YEr6Evr+E1BExgON+ME8Di0FAF4hIvPMbC2zZx2TPhicX/TASv3TUmeA19CV5DwASG8804ASwOjZRAusQNj7Hwtk267InwRDgTwWt3DxC8hr4EryHgTsP5ZhucJTNFSyBd4obHYHj7Jl32RHginIngtbsHCF5DX4LXEJDgDQ6QmSIrkC5xQ/CGt4XSZU+EJ8KZCF67e4DgNfQleA0BCd7gAJkpsgLpEjcEb379oRoAACAASURBVHhbKF32RHginIngtbsHCF5DX4LXEJDgDQ6QmSIrkC5xQ/CGt4XSZU+EJ8KZCF67e4DgNfQleA0BCd7gAJkpsgLpEjcEb3hbKF32RHginIngtbsHCF5DX4LXEJDgDQ6QmSIrkC5xQ/CGt4XSZU+EJ8KZCF67e4DgNfQleA0BCd7gAJkpsgJhxI1XrPq5Bq85IguchhfmZz3S8La4ZAMBgtcAz8dQgtcH0r4OIXgNAQne4ACZKbICYcQNsRrZ5d/jhYWxJ9JLhKsleO3uAYLX0JfgNQQkeIMDZKbICoQRNwRvZJef4E2vpUnZ1RK8dukJXkNfgtcQkOANDpCZIitA8EZ2aVJ2YWHsiZTdHCdOSoDgTYrN9yCC1zfVng8keA0BCd7gAJkpsgJhxA3P8EZ2+XmGN72WJmVXS/DapSd4DX0JXkNAgjc4QGZKW4EggpjgTa/lD2LN0+uOuVovAYLXS8js8wSvmZ8IXkNAgjc4QGZKW4Eg4ofgTa/lD2LN0+uOuVovAYLXS8js8wSvmR/Ba+i383C+YQeIyVRpJRBE/PD4SaslVxBrnl53zNV6CRC8XkJmnyd4zfwIXkM/gjdAQKZKW4Eg4ofgTa/lD2LN0+uOuVovAYLXS8js8wSvmR/Ba+hH8AYIyFSxFvAKJII3vZbfaz3T62642iAECN4gFPc+B8Fr6MtreA0BdxrON+zgLJkJAQSiLUDwRnt9UnF1BK9ddYLX0JfgNQQkeIMDZCYEEEgbAYI3bZYqtAsleO1SE7yGvgSvISDBGxwgMyGAQNoIELxps1ShXSjBa5ea4DX0JXgNAQne4ACZCQEE0kaA4E2bpQrtQgleu9QEr6EvwWsISPAGB8hMCCCQNgIEb9osVWgXSvDapSZ4DX0JXkNAgjc4QGZCAIG0ESB402apQrtQgtcuNcFr6EvwGgISvMEBMhMCCKSNAMGbNksV2oUSvHapCd49+BYUFGrd+o2qUL6scnKytWLVas1buFhX162z29EEb3AblLclC86SmRBAINoCBG+01ycVV0fw2lUneHfy/XntOvUaOkGz3/9UB+xfUc1vutKN3LkLFmlo3jN6Oq8bwWtxPxK8FnGZGgEEIiVA8EZqOSJxMQSv3WUgeHfy/XuzHjrr9JN0121Xq0ROTtFnCF67m/D32QnecJw5CwIIpF6A4E39GkTtCgheuytC8O7w/eDjJbq//8N65Yn+xWLX+fTOwbs5f4vadxul2mdWV5MGF/GrhRPYnwRtAlgcigACsRYgeGO9vEndHMGbFJvvQQTvDqqJz87U4qXf6pij/qAvli7X3845VefXrqnSpUoWBe+k0V3UsdcYSVka1KW5+/peXsPre6+J4PVvxZEIIBBvAYI33uubzN0RvMmo+R9D8O6w+sfYKRo/ebraNL1Gf/rjYXp8ymuqfvxR6tSqcVHw1qxRTUuWLdfYAbkqVaqkO7KgsNC/doYfeWe7bRkuwO0jgAACvwmMG1YichR8N0vtkmRnZaX2AmJ+doJ3xwIPGPWU1m/YpF733Ob+yZKv/qPb7x6ot54brvkff6GmuQPdP2/a+DLlNmtYtC1W/rQp5lskuNvr0jN6X+CDuztmQgABBPwLRPEZXnLL//rZOLLqgWVtTMucOwQI3h0Qjz/zmpZ9s6IoeP/z3x/UoGlXvTttpD789Et17jdOw3u1UaPmPTR+aCfVOvUEdyQvafD/WOIlDf6tOBIBBOItEMXgjbd49O+OlzTYXSOCd4evE7iXXn+Pnnu4p44+oqpGP/6iVq9Zq96dmhb7obWpM2ZrSN4UTXu8rypXqkjwJrA/Cd4EsDgUAQRiLUDwxnp5k7o5gjcpNt+DCN6dqF58bY56D5vo/kmdWjXctydz4nfXtyXr0HOM8vO3aESftgSv760mfmgtASsORQCBeAt4Ba+fJwi85oi3YPzujuC1u6YE7y6+zm9Z25yfr3Jly/iS5yUNvpjcg/x8Afc/G0cigAAC6SvgFat+vl56zZG+Opl55QSv3XUneA19CV7/gH6+gPufjSMRQACB9BXwilU/Xy+95khfncy8coLX7roTvIa+BK9/QD9fwP3PxpEIIIBA+gp4xaqfr5dec6SvTmZeOcFrd90JXkNfgtc/oJ8v4P5n40gEEEAgfQW8YtXP10uvOdJXJzOvnOC1u+4Er6Evwesf0M8XcP+zcSQCCCCQvgJesern66XXHOmrk5lXTvDaXXeC19CX4PUP6OcLuP/ZOBIBBBBIXwGvWPXz9dJrjvTVycwrJ3jtrjvBa+hL8PoH9PMF3P9sHIkAAghktgDBG6/1J3jtrifBa+hL8PoHJHj9W3EkAggg4CVA8HoJpdfnCV6760XwGvoSvP4BCV7/VhyJAAIIeAkQvF5C6fV5gtfuehG8hr4Er39Agte/FUcigAACXgIEr5dQen2e4LW7XgSvoS/B6x+Q4PVvxZEIIICAlwDB6yWUXp8neO2uF8Fr6Evw+gckeP1bcSQCCCDgJUDwegml1+cJXrvrRfAa+hK8/gEJXv9WHIkAAgh4CRC8XkLp9XmC1+56EbyGvgSvf0CC178VRyKAAAKmAgSxqWC44wleu96RCN65CxapfNkyOvmEo3e725Hjp6rp9ZerbJlSdiWSnJ3g9Q9H8Pq34kgEEEDAVIDgNRUMdzzBa9c7EsE7JG+Kqhy4v2689uJid7t9e4H+Uq+lJo1+QMcedbhdiSRnJ3j9wxG8/q04EgEEEDAVIHhNBcMdT/Da9U5p8P7086/6ZPFXev6Vd1Rpvwq6oE7Norst2F6oOR98ppdmvqt3p41UyZIl7EokOTvB6x+O4PVvxZEIIICAqQDBayoY7niC1653SoP32+++18DRT+mtdz/a413WPLmabrjmQl1y3pl2FQxmJ3j94xG8/q04EgEEEDAVIHhNBcMdT/Da9U5p8P5+axOeeU1ZWVm7vaTB7q0HMzvB69+R4PVvxZEIIICAqQDBayoY7niC1653JIK3oKBQBYUFKpGTY/duLcxO8PpHJXj9W3EkAgggYCpA8JoKhjue4LXrHYngdW5x1Y9r9Ma/FmrpN9/tdsf3tGzMuzTY3QehzE7whsLMSRBAAAFXgOBNr41A8Npdr0gE75dff6erb3tAh1SprNNrHKfsnOxid921/c0qV7a0XYkkZ+cZXv9wBK9/K45EAAEETAUIXlPBcMcTvHa9IxG8YydM08eLvtKY/u3t3q2F2Qle/6gEr38rjkQAAQRMBQheU8FwxxO8dr0jEbwPDHhEBx+0v9o0vcbu3VqYneD1j0rw+rfiSAQQQMBUgOA1FQx3PMFr1zsSwTtt5hyNevQFzXhyoLKzs+zeccCzE7z+QQle/1YciQACCJgKELymguGOJ3jtekcieJd89R/dfvdAHVLlAJ19+knar2L5Ynft/Aa20qVK2pVIcnaC939wBG2Sm4hhCCCAgAUBgtcCqsUpCV6LuJIiEbyTps7S9Flz93qneQPvVvlyZexK7GP2FatWa97Cxbq6bp3djsqU4CVmU7b9ODECCCCQlADBmxRbygYRvHbpIxG8dm/R3+wbN+XrjLrNih08qEsLXXZBLc1dsEhD857R03ndCF5/nByFAAIIIJBiAYI3xQuQ4OkJ3gTBEjw8EsG7ddt2bd26ba+XHsZbkq38YY0a3tlN/5wypOg6nF+EkZOTTfBK4hneBB9ZHI4AAgikWIDgTfECJHh6gjdBsAQPj0TwDsmbokeemr7XS3/3pVGqtMvrehO8T8/Dv1i2XPf1fUhTx/fe7didn+HdnL9F7buNUu0zq6tJg4vESxo8aTkAAQQQQCAFAgRvCtANTknwGuD5GBqJ4P3vqtX6cc3aosvdtm27nD8b9+TLuujc03XXrVcrK8vuuzc4Udux5xj3dboHHlBJ559zqv7vsIPda/o9eCeN7qKOvcY4L33WoC7N3Wd/CV4fu4xDEEAAAQQiJ0AQR2tJCF676xGJ4N3bLX7w8RLd3LafFs4cp1KW36Xhh9W/6JmX3lTl/ffT4qXf6tU356l3p9t0yXlnFgVvzRrVtGTZco0dkFt0PZu3bLe7QhGZ/a6OBRG5Ei4DAQQQQCAsgZGDiv/m07DOm4nnKVMqJxNvO7R7jnTwOq/r/fNFt2vGkwN0xB8OCQ3FOZHzzhEz356vx4bd6wZv09yB7vmbNr5Muc0aFl3LT7/mh3pdqTpZpy580UuVPedFAAEEUiUwoBdPdoRlf+B+pcM6VUaeJ7LBm79lq158bY4GjZ6s914eJecHyML8mDP/M7XrOlLzZ4x1g7dzv3Ea3quNGjXvofFDO6nWqSe4l8NLGsJcFc6FAAIIIBCmAC97CE+blzTYtY5E8I5+/EU9OnlGsTvduGmz+9+tbr1aLW+ub1dBkvPLLw45qLL2r1RBzssbegx5TGXLlNbgri2KvUvD1Bmz5fyQ3bTH+6pypYoEr/WV4QQIIIAAAqkSIHjDkyd47VpHInid18x+s3xVsTstU6aUzjjlOFWsUM6uwI7ZX5k1V6Menap16zeqZMkSqnfhWbq54aU6sPJ+u70tWYeeY5Sfv0Uj+rQleENZHU6CAAIIIJAKAYI3PHWC1651JILX7i0mNvv6DZvc3+rm910heElDYr4cjQACCCCQPgIEb3hrRfDatY5M8DrPrD7x/Ov6ZNHX7rOshx9WRfUvPkdnnX6SXQHD2eMSvPxiCcONwHAEEEAghgIEb3iLSvDatY5E8DqBe+0d3fTdyh913tl/1mGHHCjnh8a+/e57dWrVWDddd4ldBYPZCV4DPIYigAACCERagOANb3kIXrvWkQhe57esjZ0wTW8/P0zlypYpuuOJz85U/5GT9NHrD7uvq43iB8EbxVXhmhBAAAEEghAgeINQ9DcHwevPKdmjIhG8nfrk6aDKldSxZaNi9+E88/uXei310oR+OvqIqsneo9VxBK9VXiZHAAEEEEihAMEbHj7Ba9c6EsE7eOzT+uizZXpi5P3F7nbuh4vU9O6Bmj8jT+XKRvMNmQleuxuU2RFAAAEEUidA8IZnT/DatY5E8H686Ctd37KX/l7/fNU+o7qqHLi/Fn62VJNffEPHH3OEhnRvZVfBYHaC1wCPoQgggAACkRYgeMNbHoLXrnUkgte5xdfemqfewyZqzS/riu64wWV/1QPtblTpUiXtKhjMTvAa4DEUAQQQQCDSAgRveMtD8Nq1jkzwOrdZUFCo1WvWatPmfB1etYpycrLt3n0AsxO8ASAyBQIIIIBAJAUI3vCWheC1ax2J4H1p5rta+cNPuvOGK4rdrfMb2JxfOTywS3O7CgazE7wGeAxFAAEEEIi0AMEb3vIQvHatIxG8Dwx4RAfsX1G5zRoWu9sff/pF513TTnNeHKn9K1WwK5Hk7ARvknAMQwABBBCIvADBG94SEbx2rSMRvPf3f1glSuSoR4dbi92t8/KGcxu05W3J7O4Bd3Z+01oIyJwCAQQQSDMBgje8BSN47VpHIniffP519X3wSb06aaD+77CD3Tvetn27Hnz4Ob37wed6dlwPuwoGs/MMrwEeQxFAAAEEIi1A8Ia3PASvXetIBO+mzVt0fcue+vLr73Tk4YfoqCOqat7CL7Rx02Y92KuNLqhT066CwewErwEeQxFAAAEEIi1A8Ia3PASvXetIBK9zi1u3btPL/3xPi778t35eu959l4aLzz1dJ1b7o10Bw9kJXkNAhiOAAAIIRFaA4A1vaQheu9aRCV67t2lvdoLXni0zI4AAAgikVoDgDc+f4LVrTfAa+hK8hoAMRwABBBCIrADBG97SELx2rQleQ1+C1xCQ4QgggAACkRUgeMNbGoLXrjXBa+ibLsHL244ZLjTDEUAAgQwUIHjDW3SC1641wWvoS/AaAjIcAQQQQCCyAgRveEtD8Nq1JngNfQleQ0CGI4AAAghEVoDgDW9pCF671gSvoS/BawjIcAQQQACByAoQvOEtDcFr15rgNfQleA0BGY4AAgggEFkBgje8pSF47VoTvIa+BK8hIMMRQAABBCIrQPCGtzQEr11rgtfQl+A1BGQ4AggggEBkBQje8JaG4LVrTfAa+hK8hoAMRwABBBCIrADBG97SELx2rQnevfjmb9mqUiVLKCsrSytWrda8hYt1dd06ux1N8NrdoMyOAAIIIJA6AYI3PHuC1641wbsH39femqfc7qP18oR+OuqIqpq7YJGG5j2jp/O6Ebx29yOzI4AAAghESIDgDW8xCF671gTvLr4//vSLbrirj9b8sk5T8rqlRfDyW9TsPkiYHQEEEMhUAYI3vJUneO1aE7y7+LbqPEyXnHeGho17Vo/8457dgndz/ha17zZKtc+sriYNLlIUXtJA8Np9kDA7AgggkKkCBG94K0/w2rUmeHfynTpjtma+/YHG9G+vOle11oQHOxcL3kmju6hjrzGSsjSoS3Pl5GQTvHb3J7MjgAACCKRQgOAND5/gtWtN8O7w/e+q1fp78x56dlxPHVKl8h6Dt2aNalqybLnGDshVqVIl3ZHrNm6zu0I+Zm9/X6GPozgEAQQQQACBxASG9stKbABHJy1QsVyJpMcy0FuA4JVUUFCo2+8eqLNOP6nonRiuvu0BDe/VRicce6Q+XrRMTXMHuppNG1+m3GYNi2TXbdrqrWx4RPt7DSdgOAIIIIAAAkkIDO2fxCCGJCVQsexvT6TxYUeA4JW0fsMm1bq8xR6Fe3S4VYcfVkWd+41zA7hR8x4aP7STap16gnt8GK/h5TW6djY/syKAAAII7FuAlzSEt0N4SYNda4J3L757eg2v87Zkzut8h+RN0bTH+6pypYqewesnVr2+oPiZw+42YXYEEEAAgUwU8Pr+lIkmtu6Z4LUl+9u8BO8+gveJkQ/oyMMP2e19eDv0HKP8/C0a0actwWt3fzI7AggggEAKBQje8PAJXrvWBK+hr9dLGvw8O+v1BcXPHIa3wXAEEEAAAQR2E/D6/gRZcAIEb3CWe5qJ4DX0JXgNARmOAAIIIBBZAYI3vKUheO1aE7yGvgSvISDDEUAAAQQiK0Dwhrc0BK9da4LX0DeI4DW8BIYjgAACCCBgRYDgtcK6x0kJXrvWBK+hL8FrCMhwBBBAAIG0FSCIg1s6gjc4yz3NRPAa+hK8hoAMRwABBBBIWwGCN7ilI3iDsyR4LVgSvBZQmRIBBBBAIBYCBLH/ZSR4/VslcyTP8CajttMYgtcQkOEIIIAAArEVIHj9Ly3B698qmSMJ3mTUCF5DNYYjgAACCGSCAMHrf5UJXv9WyRxJ8CajRvAaqjEcAQQQQCATBAhe/6tM8Pq3SuZIgjcZNYLXUI3hCCCAAAKZIEDw+l9lgte/VTJHErzJqBG8hmoMRwABBBDIBAGC1/8qE7z+rZI5kuBNRo3gNVRjOAIIIIBAJggQvP5XmeD1b5XMkQRvMmoEr6EawxFAAAEEMkGA4PW/ygSvf6tkjiR4k1EjeA3VGI4AAgggkAkCBK//VSZ4/VslcyTBm4wawWuoxnAEEEAAgUwQIHj9rzLB698qmSMJ3mTUCF5DNYYjgAACCGSCAMHrf5UJXv9WyRxJ8CajRvAaqjEcAQQQQCATBAhe/6tM8Pq3SuZIgjcZNYLXUI3hCCCAAAKZIEDw+l9lgte/VTJHErzJqBG8hmoMRwABBBDIBAGC1/8qE7z+rZI5kuBNRo3gNVRjOAIIIIBAJggQvP5XmeD1b5XMkQRvMmoEr6EawxFAAAEEMkGA4PW/ygSvf6tkjiR4k1EjeA3VGI4AAgggkAkCBK//VSZ4/VslcyTBm4wawWuoxnAEEEAAgUwQIHj9rzLB698qmSMJ3mTUCF5DNYYjgAACCGSCAMHrf5UJXv9WyRxJ8CajRvAaqjEcAQQQQCATBAhe/6tM8Pq3SuZIgncXtU2bt6hETrZKlixR9JkVq1Zr3sLFurpund2M//vTpn26d+35v3mSWSDGIIAAAgggkK4CBK//lSN4/VslcyTBu0NtzvzPNGDkJK38YY37J3Vqnaxud9+iShXLa+6CRRqa94yezutG8CazyxiDAAIIIJCRAgSv/2UneP1bJXMkwbtD7ZNFX2nrtu06rUY1Oc/ytu3yoP5y2om6rdFlBG8yO4sxCCCAAAIZL0Dw+t8CBK9/q2SOJHj3onZ//4fdZ3fvadW4WPBuzt+i9t1GqfaZ1dWkwUXiJQ3JbDvGIIAAAghkggDB63+VCV7/VskcSfDupLbml3X6ZvlKvb9gkZ56YZbGDe6o4485oih4J43uoo69xkjK0qAuzZWTk03wJrPrGIMAAgggkBECBK//ZSZ4/VslcyTBu5Pa9Fnva+Sjz+vb775Xo/rnq/lNV6rKgfsXBW/NGtW0ZNlyjR2Qq1KlSrojV6/N36f7vV2zk1kXxiCAAAIIIJARAv17FmTEfXrd5EGVSnsdwucNBAjePeCtXbdBfYZN1LbtBRrSvaUbvE1zB7pHNm18mXKbNSwalb91+z75W3XggWywPxmKAAIIIBBzgVGDeWLIWeLSJXNivtKpvT2Cdy/+s9//RLndR2v+jLFu8HbuN07De7VRo+Y9NH5oJ9U69QR3JK/hTe0G5uwIIIAAAuktwMsefls/XtJgdx8TvDt8F362VMf96QiVK1tazmt5ew+boPUbNumhQR2K/dDa1BmzNSRviqY93leVK1UkeO3uT2ZHAAEEEIi5AMFL8IaxxQneHcr9R07SxGdn6oD9K7q/dOLcs/6s26+/XH849KDd3pasQ88xys/fohF92hK8YexSzoEAAgggEFsBgpfgDWNzE7w7KW/duk3rN25yn7n1+8FLGvxKcRwCCCCAAAK7CxC8BG8YjwuC11CZ4DUEZDgCCCCAQEYLELwEbxgPAILXUJngNQRkOAIIIIBARgsQvARvGA8AgtdQmeA1BGQ4AggggEBGCxC8BG8YDwCC11CZ4DUEZDgCCCCAQEYLELwEbxgPAILXUJngNQRkOAIIIIBARgsQvARvGA8AgtdQmeA1BGQ4AggggEBGCxC8BG8YDwCC11CZ4DUEZDgCCCCAQEYLELwEbxgPAILXUJngNQRkOAIIIIBARgsQvARvGA8AgtdQmeA1BGQ4AggggEBGCxC8BG8YDwCC11CZ4DUEZDgCCCCAQEYLELwEbxgPAILXUJngNQRkOAIIIIBARgsQvARvGA8AgtdQmeA1BGQ4AggggEBGCxC8BG8YDwCC11CZ4DUEZDgCCCCAQEYLELwEbxgPAILXUJngNQRkOAIIIIBARgsQvARvGA8AgtdQmeA1BGQ4AggggEBGCxC8BG8YDwCC11CZ4DUEZDgCCCCAQEYLELwEbxgPAILXUJngNQRkOAIIIIBARgsQvARvGA8AgtdQmeA1BGQ4AggggEBGCxC8BG8YDwCC11CZ4DUEZDgCCCCAQEYLELwEbxgPAILXUJngNQRkOAIIIIBARgsQvARvGA8AgtdQmeA1BGQ4AggggEBGCxC8BG8YDwCC11CZ4DUEZDgCCCCAQEYLELwEbxgPAILXUJngNQRkOAIIIIBARgsQvARvGA8AgtdQmeA1BGQ4AggggEBGCxC8BG8YDwCC11D59rZbDWdgOAIIIIAAApkrQPASvGHsfoLXUJngNQRkOAIIIIBARgsQvARvGA8AgncX5fwtW5WdlaWSJUsUfWbFqtWat3Cxrq5bZ7c1IXjD2KacAwEEEEAgrgIEL8Ebxt4meHcoL/nqP+o34kl9vuTf7p9c9NfT1KX9zSpbppTmLlikoXnP6Om8bgRvGLuScyCAAAIIZIwAwUvwhrHZCd4dyp8u/lrfrfxRl/7tTG3clK9m9/xD11z+V/dZXYI3jK3IORBAAAEEMlGA4CV4w9j3BO9elEc9OlXrNmzSvXddXyx4N+dvUftuo1T7zOpq0uAi8ZKGMLYp50AAAQQQiKsAwUvwhrG3Cd49KBcWFuq6O7urxU31dUGdmkXBO2l0F3XsNUZSlgZ1aa6cnGyCN4xdyjkQQAABBGIrQPASvGFsboJ3D8rjnnxZc+Z/pnGDO6pkiZyi4K1Zo5qWLFuusQNyVapUSXckz/CGsU05BwIIIIBAXAXGDfvfD4nH9R793FdWVpafwzgmSQGCdxe4GW+8r0FjJuuZh3rowMr7uZ91XsPbNHeg+7+bNr5Muc0aFo0ieJPceQxDAAEEEEBAEs/w8gxvGA8Egncn5dnvf6LO/cbpkSGdVO3ow4s+4wSv8+fDe7VRo+Y9NH5oJ9U69QSe4Q1jh3IOBBBAAIFYCxC8BG8YG5zg3aH84SdfqnmnIcobeLdOrHZkkX2Z0sXflmzqjNkakjdF0x7vq8qVKvKShjB2KedAAAEEEIitAMFL8IaxuQneHcot7h2qd+Z+vJv5wpnjtOCzpcXeh7dDzzHKz9+iEX3aErxh7FLOgQACCCAQWwGCl+ANY3MTvIbKvIbXEJDhCCCAAAIZLRCF4O3ac98/OBfGNR52YNmM3ge2b57gNRQmeA0BGY4AAgggkNECYcSkFzDB6yWU/p8neA3XkOA1BGQ4AggggEBGCxC8vKQhjAcAwWuoTPAaAjIcAQQQQCCjBQhegjeMBwDBa6hM8BoCMhwBBBBAIKMFCF6CN4wHAMFrqEzwGgIyHAEEEEAgowUIXoI3jAcAwWuoTPAaAjIcAQQQQCCjBQhegjeMBwDBa6hM8BoCMhwBBBBAIKMFCF6CN4wHAMFrqEzwGgIyHAEEEEAAgX0IhBHEpm9L5jXeuT2v++B9eO0+DAheQ1+C1xCQ4QgggAACCBC8InjtPgwIXkNfgtcQkOEIIIAAAghEPHiDWCCe4Q1CMfk5CN7k7dyRBK8hIMMRQAABBBAgeHmG1/KjgOA1BCZ4DQEZjgACCCCAAMFL8Fp+FBC8hsAEryEgwxFAAAEEECB4CV7LjwKC1xCY4DUEZDgCCCCAAAIEL8Fr+VFA8BoCE7yGgAxH07dXuwAAF9RJREFUAAEEEECA4CV4LT8KCF5DYILXEJDhCCCAAAIIELwEr+VHAcFrCEzwGgIyHAEEEEAAAYKX4LX8KCB4DYEJXkNAhiOAAAIIIEDwEryWHwUEryEwwWsIyHAEEEAAAQQyIHi9Fvnh4SW9DuHzBgIErwGeM5TgNQRkOAIIIIAAAgSvCF67DwOC19CX4DUEZDgCCCCAAAIWg7drzxJp4Uvw2l0mgtfQl+A1BGQ4AggggAACBC/P8Fp+FBC8hsAEryEgwxFAAAEEECB4CV7LjwKC1xCY4DUEZDgCCCCAAAIGAj27btvnaF7SYIAbo6EEr+FiEryGgAxHAAEEEEDAQIDgNcDLoKEEr4/FXrFqteYtXKyr69bZ7WiC1wcghyCAAAIIIGBJgOC1BBuzaQnenRZ067btevDh5zR+8nR9+sajys7Ocj87d8EiDc17Rk/ndSN4Y/YA4HYQQAABBNJbgOBN7/UL6+oJ3h3S69ZvVIt7h6rSfuX11rsfEbxh7UDOgwACCCCAgIEAwWuAl0FDCd4di11QUKjX35mvv5x2ks6+otVeg3dz/ha17zZKtc+sriYNLuIXT2TQg4VbRQABBBCIngDBG701ieIVEby7rMradRv2GryTRndRx15jJGVpUJfmysnJJnijuKu5JgQQQACBjBEgeDNmqY1ulOBNIHhr1qimJcuWa+yAXJUq9dvvvOaH1oz2H4MRQAABBBAwEhg1OGef41t12G40f1iD+U1rdqUJXp/B2zR3oHtk08aXKbdZw6JRBK/dDcrsCCCAAAII7EtgQK/CfQJ16vLbD6BH/YPgtbtCBK/P4O3cb5yG92qjRs17aPzQTqp16gnuSILX7gZldgQQQAABBPYlwEsa2B9+BAhen8H7+9uSTZ0xW0Pypmja431VuVJFgtfPLuMYBBBAAAEELAkQvJZgYzYtwZtg8DqHd+g5Rvn5WzSiT1uCN2YPCG4HAQQQQACBVAjwkga76gSvoS8vaTAEZDgCCCCAAAIIiOC1uwkIXkNfgtcQkOEIIIAAAgggQPBa3gMEryEwwWsIyHAEEEAAAQQQIHgt7wGC1xCY4DUEZDgCCCCAAAIIELyW9wDBawhM8BoCMhwBBBBAAAEECF7Le4DgNQQmeA0BGY4AAggggAACBK/lPUDwGgITvIaADEcAAQQQQAABgtfyHiB4DYEJXkNAhiOAAAIIIIAAwWt5DxC8hsAEryEgwxFAAAEEEECA4LW8BwheQ2CC1xCQ4QgggAACCCBA8FreAwSvITDBawjIcAQQQAABBBAgeC3vAYLXEJjgNQRkOAIIIIAAAggQvJb3AMFrCEzwGgIyHAEEEEAAAQQIXst7gOA1BCZ4DQEZjgACCCCAAAIEr+U9QPAaAhO8hoAMRwABBBBAAAGC1/IeIHgNgQleQ0CGI4AAAggggADBa3kPELyGwASvISDDEUAAAQQQQIDgtbwHCF5DYILXEJDhCCCAAAIIIEDwWt4DBK8hMMFrCMhwBBBAAAEEECB4Le8BgtcQmOA1BGQ4AggggAACCBC8lvcAwWsITPAaAjIcAQQQQAABBAhey3uA4DUEJngNARmOAAIIIIAAAgSv5T1A8BoCE7yGgAxHAAEEEEAAAYLX8h4geA2BCV5DQIYjgAACCCCAAMFreQ8QvIbABK8hIMMRQAABBBBAgOC1vAcIXkNggtcQkOEIIIAAAgggQPBa3gMEbwLAa9dtUMXy5ZSdnVU0iuBNAJBDEUAAAQQQQGCPAg8PL4mMRQGC1wfu8hU/6K7Ow7TyhzXu0X3vu10X/fV0938TvD4AOQQBBBBAAAEE9ilA8NrdIASvD98W9w5V9eP+qFa3Xq3FS7/VtXd007svjVKliuUJXh9+HIIAAggggAAC+xYgeO3uEILXw3fjpnydUbeZ3n5+uA46oNJvz+p2GKSrLqmtehedRfDa3Z/MjgACCCCAQEYIELx2l5ng9fD9buWPuqRxR33+1mNFR/YaOkFVDzlQt19/OcFrd38yOwIIIIAAAhkhQPDaXWaC18N3yVf/0Q139dH8GWOLjvzH2CnuD661v/M6gtfu/mR2BBBAAAEEMkKA4LW7zASvh+/K73/ShX+/u9gzvD2GPK7Dq1ZR08aX2V0dZkcAAQQQQAABBBAwFiB4PQjzt2xVzYvv0D+nDFHVgw9wj76xdV/9/cq/ua/h5QMBBBBAAAEEEEAg2gIEr4/16dBzjKoefKBym12nTxZ/retb9tKcF0dq/0oVfIzmEAQQQAABBBBAAIFUChC8PvR/WP2LWt8/XF8vX+ke3aPDrbrsglo+Rnofsn17gZxnkcuVLb3bwdu2b1d+/laVL1fGeyKOkOO1Zcu2PVoWFhbq1/Ub3beS48O/gGNaWCiVLJFTNAhL/35+jtzTL7TxMy6Tj9myZaucd9CptF95ZWX97xcBYRncrnB8ncd9yZIlgps0xjMVFBRqy9atKlO61G53iWU0Fp7gTWAd1q3fqPLlyhb7TWsJDC926M9r18n54bfX3prv/vlpNY5Vx5aN9acjD3P/e8yEFzVy/FSVK1tGp59ynAZ3bUH47gX72+++V78RT+jDT5a6R5x03B/VocXfVf24o9z/nv3+J8rtPtr931UOrKSRfdvp6COqJrt0GTPOiYq/N++h4445Qv0734llEis/YvzzGjthWtFI57X/rz01yP3vff1CmyROlRFDvli2XN0GPar/fr/aDbFH/nGPjjqiKpYJrL7zl9hTLmi62wjn6+XTed20afMW3df3Ic2Z/5l7TJMGF6rt7dcU+4tFAqfLiEMHj31a02fN1dat23TCsUe6T4o57+SEZbSWn+BN0Xr8sna9Xnj1X/p7/fNVsmSOhoydIufZiT733q5Pv/hGLe8domfH9XTf+7dTnzz3h+Ta3XFtiq422qddvWat5i38Qhefd7qylKW8J17SJ4uWaeyAu7U5f4vqXNVGD/ZqrbNOP0mTX3xDU6fPdr+w87FvASfWXn79PZ168rFu8GKZ+I5xfsD1hGOOUP1La7uDs7Oyip4x29cvtEn8TPEf8dPPv+rS6+9x9+IFdWoWu2EsE1t/5y+zhTsN6T1soipXqqDcZg312JRX9c57Hytv4N3auDlfDe/srq65N+ucM6ondpIMOfqTRV+pVedhenXSIJUtU1r9Rz6pnJwcdWrVGMuI7QGCNyILMvfDRer74BOa9nhf95ndX9dvUOc2N7hXt+DTperQc7TeeGZoRK422pfx4mtz9NjTMzR1fG+998Hn6jVsgqY/McC9aCfaTrvkTr0+ebAOO/SgaN9ICq/O+SL+wIBHdON1F+vDT750IwPLxBekTZcHddWldXT+OacWG+z1C20SP1P8RzjPlK9YtVq97rkNywCX2/nXxtr1W2vm5MH6w6EHuW/DedN1l+jic093zzLuyZflvB+986wlH7sL/P518eUJ/d1//XX26aof1qh7h1uwjNiGIXgjsiDOyxucf2py/lbYZeB4HX/M/6lJg4vcq3NeQ/y3a9vpk1njlZOTHZErjtZlOCG79JsV7jO7E56ZqVa3XqUrLz5HL818VzPfnq8RfdoWXbDzi0T633+nTq1+bLRuIiJX4/wz3DW3d1G/znfq2+9W6d0PPneDF8vEF8iJh8MOOVCHVDlAZ556vGqdeoJKlSrpBsS+fqFN4meK/wjn5yicf21w/nXs57XrVf+Sc3RajWpuBGOZ/Po7Qbt46bca0r2VO8n517XXqL7t3H+adz5ee2uennvlHT00qEPyJ4nxSOdncFp0GqKCwkLVPPlYvfLPuRo7INd9qQ2W0Vp4gjcC6/HBx0vUvttIPTOuhw6tcoDadR2p2meerGvrnetenfPDVmfVa6l508fyOt69rNc3y1cqt/soffn1dzrjz8frvtZNdNyf/k+Tps7SR58t1cAuzYtGXntHN7W9/VrVqXVyBFY/epcwYNRT7g+rOP+8OW3mnKLgxTLxtXL+kuA8g+Z8U3xjzkKt/XW9XpnY392n+/qFNomfKf4jnMft9z+uUYcWjVRQUCDnJTf3t7lRhx9WBcskl9/Zlxc2zNWwnq3dvzw4Hyedd4temtCv6Occ3n7vY41+7AVeBrYP46kzZrv/IuZ8XHHx2e6z4aVLlcQyyX1paxjBa0vW57xffftfNWreU3kDc1Xz5N++4HQf/JiOPrKq+89KzseqH9foguty9ekbjwbyA3M+Ly0tD3O+gE+Z9qYeeuIlvfncMPeHAp0fJnCesfj9w3k2yAngU078U1reo82Lnv/RF+5fHJ4a09X9aWPn2Z35Hy1xX8P33oefY2mA7/xAy9lX3qXR/dq5r8nnF9okhnnlzZ11R5N6blA4H7//Bcz5jZdYJmb5+9HOX2gfnfzby79+/3CelRzRu637w7/Ox/RZ7+uFV2fzDO9eiN969yP1G/Gkxg3uoDKlS6vHkMfc1/I6P2iOZXL70tYogteWrI95nX+Ka9S8hzq1ur7YL7FwYm3lD2vULfdmd5b3Fy52f2qW1/D6QJXkvJvGX+q11LTH+rg/CHhf33FFPxn/+2sneQ3vni0ffOQ55U18abdPHrB/RQ3v1RpLf1twr0c1btlL115+rvt45xfaJIbp/GDQpeedWRS8Tqw5f6F1/ikey8QsnaOdtxesf8v9ur3J5e7Lv37/uK39AF1b77yit94c/fiL7jPrvIZ3z8bdBj+qQw8+QC1uqu8esOybFap/6/36eNYjurPDYCwT35rWRhC81mj3PbHzutwbW/fRzQ0vVYPL6hQdXKpkSX2z/L9q1KKXXni0tw6pUtl9xu2Phx/q/hMzH7sLLP3mO1WqWEEHH7S/+zYwk6b+U0PypuiDVx9y3wHjb9e0U697muq8s//s/tSs884Dz47rAaUPgZ1f0uC8xhxLH2g7DnHeY/ujz5e5r+vbXlCgOfM+U8v7hmruy6NVsUI58Qtt/Fs6RzovD3Febzpx5P0qLChUh15jdOXFZ7uxhmVils7Rzg9btekyQrNfeLDYe8dOeektTXttjh7+R0f3vY6vvaOruuXeonPPOiXxk2TACGdfPjf9HY3u1959GcPE52bK+Zcy518VsYzWBiB4U7QeTngNGj15t7OPH9rJ/cGWJ59/XcPGPed+/tTqx2hQ1xb80oS9rNUrs+a6LwMpU7qkNudvdV+b2/iqC9zX8jofCz79Um27jHA/5zxT+WDvNu7re/nwFtg5eLH09tr5iK3btqtxi57uDwT9/n7azq8kd/7i5XzY/IU2iV1pehzt/IVr4KjJ7tdG53Fc76Kz1eqWq1ShfFksk1hC5xnzk6r9US1vuarYaOelN86zlq+/86E2btqsm6+7xH3dtPMOBHzsLuD8wLTztm5vv/eR+8nqxx+tNk0buD/0h2W0dgzBG631KHY1/KY1/4vjPJvmvJShQoWyKpHzv98KtvMMzssb+E1r/k33dSSW/h2dfem8u4oTvXv6CPIX2vi/qvQ90nkPWefDebeLXT+wDG5dnX8tK5GTzW9a80nq/KY1J3739FtTsfSJaPkwgtcyMNMjgAACCCCAAAIIpFaA4E2tP2dHAAEEEEAAAQQQsCxA8FoGZnoEEEAAAQQQQACB1AoQvKn15+wIIIAAAggggAAClgUIXsvATI8AAggggAACCCCQWgGCN7X+nB0BBBBAAAEEEEDAsgDBaxmY6RFAAAEEEEAAAQRSK0DwptafsyOAAAIIIIAAAghYFiB4LQMzPQIIIIAAAggggEBqBQje1PpzdgQQQAABBBBAAAHLAgSvZWCmRwABBBBAAAEEEEitAMGbWn/OjgACCCCAAAIIIGBZgOC1DMz0CCCAAAIIIIAAAqkVIHhT68/ZEUAAAQQQQAABBCwLELyWgZkeAQQQQAABBBBAILUCBG9q/Tk7AggggAACCCCAgGUBgtcyMNMjgEDmCrz3weea8OxMjenfPnMRuHMEEEAgAgIEbwQWgUtAAIF4Ckyf9b76jXhCs18YEc8b5K4QQACBNBEgeNNkobhMBBBIPwGCN/3WjCtGAIF4ChC88VxX7goBBAIQePG1OZr84ht6YsT9ysnJdmcsKCjUTW366prL/6p6F56lkY9O1evvfKBvv/teZ/z5eN3RpJ7OOaO6e+yuwXvtHd10d7OGOuv0k4qurk2XB3VB7dNU/5Jz3D/7dPHXGjh6sr5YtlxHHn6IWt/WQOeedUoAd8MUCCCAQOYKELyZu/bcOQIIeAisWLVaFzfqoMeG3evGrPOx4NMvdWPrvprx5EAd8YeD1Wf4RB179P/p2KP+oKenvamFny7Va08N2mPwnnTeLRreq7UurHNa0ZmdCHZi98ZrL9bKH9bowoa5uurS2m5MvzFngSZNnaUXHu2tY486nPVCAAEEEEhSgOBNEo5hCCCQGQK3tOuvo46oqm65N7s37ATuF8v+o4kjOu8GsHzF96rbpJNentDPHbPrM7xewTts3LN67pW39eZzw1QiJ8d9NrnW5S3UpMGFanfHtZkBzl0igAACFgQIXguoTIkAAvERmDZzjnoNnag5L45QVlaWzr7yLnVu00RX163j3uQHHy/RO3M/1ncrV+vX9RvkvDPD5LHddPLxRyUcvK3vH665Cxbr9FOOKwJ05q9Tq4aGdG8ZH1TuBAEEEAhZgOANGZzTIYBAegms37DJfZZ1VN927ut4m3caovdeHq39KpTTI09N15C8Kbr+6gt0yonHqGKFcmp539CEgveyGzqp8VUXuC9puLPjYK35ZZ1ubVS3GNKhVQ7QaTWqpRccV4sAAghESIDgjdBicCkIIBBNgc79xqmgsFA52dnatn27BtzfzL3QSxp31FmnnaTuHW5x//utdz9Sq87D9hq8Z9RtrvZ3XucGsvOxOX+LTrvkTt171/Vu8PZ98AlNnfEvvffyKPclDXwggAACCAQjQPAG48gsCCAQY4G5Hy5S07sHqlzZMhrW866id2Fw3mFhy5at6t+5mb5evlKDxkzWJ4u+2mvwOq8H3rQpX/3uv1Nbt27ThGde0wuv/qsoeJd89R81aNpF19Y7V43qn6/y5crosy/+rWpHH65jjvpDjIW5NQQQQMCuAMFr15fZEUAgBgLOs7p/u6adeye//0CZ878/XvSVeg2doMVLv3U/d3/bG/X4lFf1j+4tVf243V/Du+jLf8v5wbQ58z9zj7/i4rO15udf3bcda9LgIvfP3vjXAvUePlHf//iz+99OZI/u167oXSJiwMktIIAAAqELELyhk3NCBBCIm8DaXzeoQvmyRe/V63V/v67fqNKlSrr/t7ePtes2qLCgUPtVLK/s7CyvKfk8AggggMA+BAhetgcCCCCAAAIIIIBArAUI3lgvLzeHAAIIIIAAAgggQPCyBxBAAAEEEEAAAQRiLUDwxnp5uTkEEEAAAQQQQAABgpc9gAACCCCAAAIIIBBrAYI31svLzSGAAAIIIIAAAggQvOwBBBBAAAEEEEAAgVgLELyxXl5uDgEEEEAAAQQQQIDgZQ8ggAACCCCAAAIIxFqA4I318nJzCCCAAAIIIIAAAgQvewABBBBAAAEEEEAg1gIEb6yXl5tDAAEEEEAAAQQQIHjZAwgggAACCCCAAAKxFiB4Y7283BwCCCCAAAIIIIAAwcseQAABBBBAAAEEEIi1AMEb6+Xl5hBAAAEEEEAAAQQIXvYAAggggAACCCCAQKwFCN5YLy83hwACCCCAAAIIIEDwsgcQQAABBBBAAAEEYi1A8MZ6ebk5BBBAAAEEEEAAAYKXPYAAAggggAACCCAQawGCN9bLy80hgAACCCCAAAIIELzsAQQQQAABBBBAAIFYCxC8sV5ebg4BBBBAAAEEEECA4GUPIIAAAggggAACCMRagOCN9fJycwgggAACCCCAAAIEL3sAAQQQQAABBBBAINYCBG+sl5ebQwABBBBAAAEEECB42QMIIIAAAggggAACsRYgeGO9vNwcAggggAACCCCAAMHLHkAAAQQQQAABBBCItQDBG+vl5eYQQAABBBBAAAEECF72AAIIIIAAAggggECsBQjeWC8vN4cAAggggAACCCBA8LIHEEAAAQQQQAABBGItQPDGenm5OQQQQAABBBBAAAGClz2AAAIIIIAAAgggEGsBgjfWy8vNIYAAAggggAACCPw/hrLFFIM2eRgAAAAASUVORK5CYII="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "q_upper = np.quantile(clients['age'],0.99)\n",
    "q_lower = np.quantile(clients['age'],0.01)\n",
    "\n",
    "clients_age_cleaned = clients[(clients['age'] < q_upper) & (clients['age'] > q_lower)]['age']\n",
    "\n",
    "\n",
    "fig = px.histogram(clients_age_cleaned)\n",
    "fig.show('png')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "c3f169b0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "gender\n",
       "F    147649\n",
       "M     66807\n",
       "U    185706\n",
       "dtype: int64"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "### gender variable\n",
    "clients.groupby('gender').size()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "1cb705d9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAArwAAAH0CAYAAADfWf7fAAAgAElEQVR4XuydeZwU1dX3T/ewzIBmwA0m+uhANIImQYz7Y5RFZdHEaFzRxAUUBZeAuEQTjRrIIyoGowjGlUSNJJEQo0hcguQVcUmQJAaJkcVoWFSYiQszwnS/n1PtmbldVHVX9a3uvnXr1/8o03Wrzv2dU9XfPn3uualsNpslvKAAFIACUAAKQAEoAAWggKUKpAC8lnoW04ICUAAKQAEoAAWgABRwFADwIhCgABSAAlAACkABKAAFrFYAwGu1ezE5KAAFoAAUgAJQAApAAQAvYgAKQAEoAAWgABSAAlDAagUAvFa7F5ODAlAACkABKAAFoAAUAPAiBqAAFIACUAAKQAEoAAWsVgDAa7V7MTkoAAWgABSAAlAACkABAC9iAApAASgABaAAFIACUMBqBQC8VrsXk4MCUAAKQAEoAAWgABQA8CIGoAAUgAJQAApAASgABaxWAMBrtXsxOSgABaAAFIACUAAKQAEAL2IACkABKAAFoAAUgAJQwGoFALxWuxeTgwJQAApAASgABaAAFADwIgagABSAAlAACkABKAAFrFYAwGu1ezE5KAAFoAAUgAJQAApAAQAvYgAKQAEoAAWgABSAAlDAagUAvFa7F5ODAlAACkABKAAFoAAUAPAiBqAAFIACUAAKQAEoAAWsVgDAa7V7MTkoAAWgABSAAlAACkABAC9iAApAASgABaAAFIACUMBqBQC8VrsXk4MCUAAKQAEoAAWgABQA8CIGoAAUgAJQAApAASgABaxWAMBrtXsxOSgABaAAFIACUAAKQAEAL2IACkABKAAFoAAUgAJQwGoFALxWuxeTgwJQAApAASgABaAAFADwIgagABSAAlAACkABKAAFrFYAwGu1ezE5KAAFoAAUgAJQAApAAQAvYgAKQAEoAAWgABSAAlDAagUAvFa7F5ODAlAACkABKAAFoAAUAPAiBqAAFIACUAAKQAEoAAWsVgDAa7V7MTkoAAWgABSAAlAACkABAC9iAApAASgABaAAFIACUMBqBQC8VrsXk4MCUAAKQAEoAAWgABQA8CIGoAAUgAJQAApAASgABaxWAMBrtXsxOSgABaAAFIACUAAKQAEAL2IACkABKAAFoAAUgAJQwGoFALxWuxeTgwJQAApAASgABaAAFADwIgagABSAAlAACkABKAAFrFYAwGu1ezE5KAAFoAAUgAJQAApAAQAvYgAKQAEoAAWgABSAAlDAagUAvFa7F5ODAlAACkABKAAFoAAUAPAiBqAAFIACUAAKQAEoAAWsVgDAa7V7MTkoAAWgABSAAlAACkABAC9iAApAASgABaAAFIACUMBqBQC8VrsXk4MCUAAKQAEoAAWgABQA8CIGoAAUgAJQAApAASgABaxWAMBrtXsxOSgABaAAFIACUAAKQAEAL2IACkABKAAFoAAUgAJQwGoFALxWuxeTgwJQAApAASgABaAAFADwIgagABSAAlAACkABKAAFrFYAwGu1ezE5KAAFoAAUgAJQAApAAQAvYgAKQAEoAAWgABSAAlDAagUAvFa7F5ODAlAACkABKAAFoAAUAPAiBqAAFIACUAAKQAEoAAWsVgDAa7V7MTkoAAWgABSAAlAACkABAC9iAApAASgABaAAFIACUMBqBQC8VrsXk4MCUAAKQAEoAAWgABQA8CIGoAAUgAJQAApAASgABaxWAMBrtXsxOSgABaAAFIACUAAKQAEAr2YM/OeDzZpnsGN4fffOtLUtSx+3bLVjQphFWRXouV0XatnSRptb28p6HZw83gp8fsc6wjM23j6spPW2xwvPD6/SFQDwlq6dMxIP45yAAF7NQErYcABvwhxe4nRtB5gSZcEwHwVsjxcAr17oA3j19APwfqYfgFczkBI2HMCbMIeXOF3bAaZEWTAMwIsYKEEBAG8JoqlDkOFFhlczhBI5HMCbSLeHnjSAN7RkiR5ge7wgw6sX3gBePf2Q4UWGVzOCkjkcwJtMv4edte0AE1YPHF9YAdvjBcCrdwcAePX0A/ACeDUjKJnDAbzJ9HvYWdsOMGH1wPEAXsRA6QoAeEvXzhmJkgaUNGiGUCKHA3gT6fbQkwbwhpYs0QNsjxdkePXCG8Crpx+AFxlezQhK5nAAbzL9HnbWtgNMWD1wPDK8iIHSFQDwlq4dMryKdujSoBlICRsO4E2Yw0ucLoC3ROESOsz2eEGGVy+wAbx6+iHDiwyvZgQlcziAN5l+Dztr2wEmrB44HhlexEDpCgB4S9cOGV5keDWjJ7nDAbzJ9X2YmQN4w6iFY22PF2R49WIcwKunHzK8yPBqRlAyhwN4k+n3sLO2HWDC6oHjkeFFDJSuAIC3dO2Q4UWGVzN6kjscwJtc34eZOYA3jFo41vZ4QYZXL8YBvHr6IcOLDK9mBCVzOIA3mX4PO2vbASasHjgeGV7EQOkKAHhL1w4ZXmR4NaMnucMBvMn1fZiZA3jDqIVjbY8XZHj1YhzAq6cfMrzI8GpGUDKHA3iT6fews7YdYMLqgeOR4UUMlK4AgLd07ZDhRYZXM3qSOxzAm1zfh5k5gDeMWjjW9nhBhlcvxgG8evohw4sMr2YEJXM4gDeZfg87a9sBJqweOB4ZXsRA6QoAeEvXDhneMmZ4n1uYooWLamjQEW00ZFBW00sYbpoCAF7TPGKmPQBeM/1iqlW2xwsyvHqRB+DV0w8Z3jJleAG8moFp+HAAr+EOMsQ82wHGEJmtMcP2eAHw6oUqgFdPPwAvgFczgpI5HMCbTL+HnbXtABNWDxyPkgbEQOkKAHhL1w4lDShp0Iye5A4H8CbX92FmDuANoxaOtT1ekOHVi3EAr55+yPAiw6sZQckcDuBNpt/Dztp2gAmrB45HhhcxULoCAN7StUOGt4wZ3ocfTdMbK9JYtKYZn6YOB/Ca6hmz7ALwmuUP062xPV6Q4dWLQACvnn7I8JYpw3vvAzW05u0UgFczPk0dDuA11TNm2WU7wJildvytsT1eALx6MQrg1dMPwAvg1YygZA4H8CbT72FnbTvAhNUDx6OkATFQugIA3tK1Q0lDGUsakOHVDEzDhwN4DXeQIeYBeA1xREzMsD1ekOHVC0QAr55+yPAiw6sZQckcDuBNpt/Dztp2gAmrB45HhhcxULoCAN7StUOGFxlezehJ7nAAb3J9H2bmAN4wauFY2+MFGV69GAfw6umHDC8yvJoRlMzhAN5k+j3srG0HmLB64HhkeBEDpSsA4C1dO2R4keHVjJ7kDgfwJtf3YWYO4A2jFo61PV6Q4dWLcQCvnn7I8CLDqxlByRwO4E2m38PO2naACasHjkeGFzFQugIA3tK1Q4YXGV7N6EnucABvcn0fZuYA3jBq4Vjb4wUZXr0YB/Dq6YcMLzK8mhGUzOEA3mT6PeysbQeYsHrgeGR4EQOlKwDgLV07ZHiR4dWMnuQOB/Am1/dhZg7gDaMWjrU9XpDh1YtxAK+efsjwIsOrGUHJHA7gTabfw87adoAJqweOR4YXMVC6AgDe0rVDhhcZXs3oSe5wAG9yfR9m5gDeMGrhWNvjBRlevRgH8OrphwxvmTO8e+yepdFnt2l6CcNNUwDAa5pHzLTHdoAxU/X4WmV7vAB49WITwKunH4AXwKsZQckcDuBNpt/Dztp2gAmrB45HSQNioHQFALyla4eShjKWNEy7vYaamlKEDK9mgBo6HMBrqGMMMwvAa5hDDDfH9nhBhlcvAAG8evohw1umDO+1N3Ryzgzg1QxQQ4cDeA11jGFm2Q4whskde3NsjxcAr16IAnj19APwAng1IyiZwwG8yfR72FnbDjBh9cDxKGlADJSugLXA+/EnLdStriulUqlt1Plkcyt17lRDnTvnsojqq/nDj2n77t0ond52nNd7//lgc+nqWzSyvntn2tqWpY9btkYyK2R4I5HR2JMAeI11jVGGAXiNcofxxtgeL8jw6oWgdcD77J/+QrfOepTe+6CZtt+ujk47fgidf+bXHZU2t3xK35tyN73wyt+df59x4lF06ZhvOVD89rsb6KKrf0JrN2x03pvyvTF09BEHOP9f6D0Aby4AAbx6N2LSRgN4k+bx0uZrO8CUpgpG+Slge7wAePVi3zrgfeLZJbT7rr3oy/360Lvr3qdjTptE8x+6yfnbA3OeokUvLqNZUy+jT1pa6ZTzf0jXTjyL/vfAL9GFV91GX9q7kcafcwItf3MNnXTedbT48TupfvvuBd8D8AJ49W7BZI4G8CbT72FnbTvAhNUDxxdWwPZ4AfDq3QHWAa9bjjMvmkxnnzqcjvraV4n//zsnD6Njjsxlbn/20O/pnbXv0ZXjR9GBI8bS849Np512qHfeGzPpZvrmsMNpyOH7+7533NGHoob3M8GR4dW7EZM2GsCbNI+XNl/bAaY0VTAKGV7EQCkKWA28729spiNPvJQWzb2dduz5ORpy8gS6c8p3qf9eezhaLVj4Mv3miUVOlnfY6ZfT6wsfaNfwxttmU0OvHWn44IN83xsz6lgAL4C3lPsu8WMAvIkPgUACAHgDyYSDPlPA9nhBhlcv1K0F3q1tbXTxNbdT/712p0tGf8tRad9BZ9Pjs39MfXdvcP79/IvLaMYDv6UbrjjXyf6+Mn9mu5q3zpzjLFwbOfQQ3/cmnH8yvd/cqucBS0Z3r62htgxRy6fR7Ip21bVpR5k+e2Rp7OisJSphGqLA9nWd6NOtGWrdkoEoUMBXgZ3qu+IZi/gIrIDt8cLzw6t0BawFXs7Q/mf9B3TH5EuppiYHT5zh/emPLqV99250/v3ksy/Rb5/6E10/6Rw66tTL8jK81097kHZr2JlGDjnY973Rp4+k1i3RAF7pLjRjZKeaNGWzWWrLRAOn4yflQGjPvkQTxuX8h5c9CnC8ZLJZykQUL/Yog5moCnTtXINnLEIisAK2xwvPD6/SFbASeH9632P0/176G91z6+W0/Xbd2tU5d8JNdNJxg2jk0IOdv814cB6tf28jXX3JmbT/MefRM3OmUcMuOzjvffviKXTqNwbT0Uce4Pseang7Ag81vKXfhEkciZKGJHo9/Jxt/4k6vCIYUUgB2+MFJQ168W8d8N7/y/n0q98vpPtvu4rqP9fdUacmnXZ67s55fCH9bsELDghzL96TzruWrpt4Nh156ACadMNd1LDLjjRx7Mn01+UradS4G+mFeXdQj/rtCr6HLg25AATw6t2ISRsN4E2ax0ubr+0AU5oqGOWngO3xAuDVi33rgJfrdN2v/b/8Rfr5T6+mLVu20nW33E9PL/ozfbK5hc46eRhNuvA0p1Z3w/tNdPE102nl22ud4VzmIJngQu8BeAG8erdgMkcDeJPp97Czth1gwuqB4wsrYHu8AHj17gDrgDeIHLwBBdcQeu209uFHn1D3bnWeO615vRcn4F27PkXzn0pT715ZGjk82sVCyPAGiTwcIwoAeBELQRSwHWCCaIBjgitge7wAeIPHgteRiQRePcnyR8cJeFevTtN9s3MLwG64NpotgEUNAG+UUWX/uQC89vs4ihnaDjBRaIRzdChge7wAePWiHcCrp5+xfXgZble9naI+u2epsTGXzV26LE1z5wF4NV2O4REoAOCNQMQEnMJ2gEmACys6RdvjBcCrF04AXj39jAXe5xamaOGiGhp0RBsNGZRrFSZ/Mz3D29KSoilTc+1X9tg9S6PPRus3zTA1bjiA1ziXGGmQ7QBjpOgxNsr2eAHw6gUngFdPv1gB75NPpWnJy+ZneNXSCwCvZoAaOhzAa6hjDDPLdoAxTO7Ym2N7vAB49UIUwKunX6yA994HamjN2ylnxibX8AJ4NYMyBsMBvDFwkgEm2g4wBkhslQm2xwuAVy9cAbx6+hkPvIcclGnvyADg1XQ2hkemAIA3MimtPpHtAGO186owOdvjBcCrF1QAXj39jAdetSTg2hs6tc8WGV5Nx2O4lgIAXi35EjPYdoBJjCMrNFHb4wXAqxdIAF49/QC8n+kXZVsylDRoBmUMhgN4Y+AkA0y0HWAMkNgqE2yPFwCvXrgCePX0A/ACeDUjKJnDAbzJ9HvYWdsOMGH1wPGFFbA9XgC8encAgFdPP2OBV+p1UdKg6WAML4sCAN6yyGrdSW0HGOscVuUJ2R4vAF69AAPw6ukH4EWGVzOCkjkcwJtMv4edte0AE1YPHI8ML2KgdAUAvKVr54w0dWthZHg1HYvhZVUAwFtWea05OYDXGldWZCK2xwsyvHphBODV0w/AW+YML58+6o4Smi7H8AgUAPBGIGICTmE7wCTAhRWdou3xAuDVCycAr55+AF4Ar2YEJXM4gDeZfg87a9sBJqweOL6wArbHC4BX7w4A8OrpB+AF8GpGUDKHA3iT6fews7YdYMLqgeMBvIiB0hUA8JaunTMSNbw5AcvVh5fPjZIGzSA1cDiA10CnGGgSgNdApxhsku3xggyvXvABePX0iy3wTri0jXrWZ0ue/SOPpmlzS4pGDM9QQ68sgLdkJZM5EMCbTL+HnbXtABNWDxyPDC9ioHQFALylaxfrDO+538lQY2Om5NnLNsVyHmR4S5YykQMBvIl0e+hJA3hDS5boAbbHCzK8euEN4NXTL7YZXgCvpuMxXEsBAK+WfIkZbDvAJMaRFZqo7fEC4NULJACvnn7GA2/X2ixdc0WbM0vJyvL/mwy8L76UpvkL0u2eQQ2vZpAaOBzAa6BTDDTJdoAxUPJYm2R7vAB49cITwKunn7HAO3lqDbW2pJzZCTDGBXifW5iihYtqALyasWnycACvyd4xxzbbAcYcpe2wxPZ4AfDqxSmAV08/Y4FXhVsAr6aTMTxyBQC8kUtq5QltBxgrnVbFSdkeLwBeveAC8OrpB+D9bPFblIvWkOHVDMoYDAfwxsBJBphoO8AYILFVJtgeLwBevXAF8OrpB+AF8GpGUDKHA3iT6fews7YdYMLqgeMLK2B7vAB49e4AAK+efokH3tNPyVD/fplI+/Aiw6sZlDEYDuCNgZMMMNF2gDFAYqtMsD1eALx64Qrg1dMv8cA76Ig2GjIo2o0nALyaQRmD4QDeGDjJABNtBxgDJLbKBNvjBcCrF64AXj39ALwAXs0ISuZwAG8y/R521rYDTFg9cDxKGhADpSsA4C1dO2fkfz7YrHmG8gyvVJcGZHjL4z/bzwrgtd3D0cwPwBuNjkk5i+3xggyvXiQDePX0A/Aiw6sZQckcDuBNpt/Dztp2gAmrB45HhhcxULoCAN7StUOGl4iQ4dUMoIQOB/Am1PEhpw3gDSlYwg+3PV6Q4dULcACvnn7I8CLDqxlByRwO4E2m38PO2naACasHjkeGFzFQugIA3tK1MzbD29KSoilTt92atxxbCyPDqxlACR0O4E2o40NOG8AbUrCEH257vCDDqxfgAF49/YzM8K5enab7ZqfbZ3b1FW1UW5sl04F3U3OKmpuI/vJail5b1mG/bI2s6SoMN0gBAK9BzjDYFNsBxmDpY2ma7fEC4NULSwCvnn6xAN5zP9sNTQVeycyWOn05V7+9MzTq1MIbT6xdn3Iu09ArW/By7v67cjCAt1QvmTsOwGuub0yyzHaAMUlrG2yxPV4AvHpRCuDV0y/xwLvH7lkafXab705rkm3u3StL48a2AXg1482W4QBeWzxZ3nnYDjDlVS95Z7c9XgC8ejEN4NXTD8AbEHhZ5mKZWmR4NYMxRsMBvDFyVhVNtR1gqiitlZe2PV4AvHphC+DV0w/AGwJ4J1zaRj3r/csaALyawRij4QDeGDmriqbaDjBVlNbKS9seLwBevbAF8OrpB+ANAbxSS+wnOYBXMxhjNBzAGyNnVdFU2wGmitJaeWnb4wXAqxe2AF49/QC8IYB3xLAMHXpwxldxAK9mMMZoOIA3Rs6qoqm2A0wVpbXy0rbHC4BXL2wBvHr6AXhDAK/aGWLJy2na3JKiwUd0LGR7+NE0vbGiox2ZuKZY7a+mCzG8CgoAeKsgegwvaTvAxNAlRptse7wAePXCD8Crpx+At0TglbZmapnDvQ/U0Jq3cy3M1FexUghNF2J4FRQA8FZB9Bhe0naAiaFLjDbZ9ngB8OqFH4BXT7/EA6+0G6vv3pm2tmXp45ateYqqm2DsNyBDJx6fK2kA8GoGXsyHA3hj7sAKmW87wFRIxsRcxvZ4AfDqhTKAV08/o4B36bI0zZ2XJu6Nq2ZKy7nxBMvHJQdBgFd69gJ4NYPOguEAXgucWIEp2A4wFZAwUZewPV4AvHrhDODV088o4JVFX3ECXnUhG0oaNIMxRsMBvDFyVhVNtR1gqiitlZe2PV4AvHphC+DV0w/Aq5nhVReyAXg1gzFGwwG8MXJWFU21HWCqKK2Vl7Y9XgC8emEL4NXTz0jg7dEjS01NHYu/TC5pAPBqBmBMhwN4Y+q4CpttO8BUWE7rL2d7vAB49UIYwKunn5HA654Slw00Nmbprlk17W+poFmKBLLojMfq1PCqC9mQ4S3FE/EcA+CNp98qbbXtAFNpPW2/nu3xAuDVi2AAr55+sQBehtu+jSm6b3ZHj9tqAK90dGDJBZjVhWwAXs1gjNFwAG+MnFVFU20HmCpKa+WlbY8XAK9e2AJ49fQD8IbI8Eo2uFTgXbs+RfOfShOD88jh/ju2aboUwyugAIC3AiJbcAnbAcYCFxk1BdvjBcCrF24AXj39Ygu8hxyU0YLGUkoadIFXevqqWWFN92F4lRQA8FZJ+Jhd1naAiZk7jDfX9ngB8OqFIIBXT7/YAq8uNKrAe+HYNurXt1PRjSe8gFf9W7GSBgCvZrAaNBzAa5AzDDbFdoAxWPpYmmZ7vAB49cISwKunH4CXiLgLxIB9ayIH3q5ds9TamnLO39iYIQFetRZY030YXiUFALxVEj5ml7UdYGLmDuPNtT1eALx6IQjg1dMPwFtG4JUNNNzAq2aFNd2H4VVSAMBbJeFjdlnbASZm7jDeXNvjBcCrF4IAXj39ALxFgPfFl9I0f0FHd4irr2ij2tpse5eGQiUNAF7N4DR4OIDXYOcYZJrtAGOQ1FaYYnu8AHj1whTAq6cfgLcI8Mp2xyKz1yYY3MeXX+4aXjfwqueSMZruw/AqKQDgrZLwMbus7QATM3cYb67t8QLg1QtBAK+eflUDXoFDAUiehhsuZWpefXijXLRWqIYXwKsZYJYOB/Ba6tiIp2U7wEQsV+JPZ3u8AHj1QhzAq6cfgBcZXs0ISuZwAG8y/R521rYDTFg9cHxhBWyPFwCv3h0A4NXTD8AL4NWMoGQOB/Am0+9hZ207wITVA8cDeBEDpSsA4C1dO2fkfz7YrHmG0oabVNJwwvEZGnSYd1uyICUNUpaBGt7SYiGOowC8cfRa5W0G8FZe8zhf0fZ4QYZXLzoBvHr6GQ28Peqz1NScov0GZGj/AUT3ze7olhBlDS/XCJ9wrPfGEwBezQCzdDiA11LHRjwt2wEmYrkSfzrb4wXAqxfiAF49/YwGXulywP8dOihrBPCefkqG+vfL5LUlQ4ZXMwhjOBzAG0OnVcFk2wGmCpJafUnb4wXAqxe+AF49/QC8RBQmw8vHDhmU34fXD3j52IWLapzz8xg1Wyz9fDXdh+FVUgDAWyXhY3ZZ2wEmZu4w3lzb4wXAqxeCAF49/YwG3n57Z+iNFWkyKcOrA7xPPpWmJS/nyjLUdmyaLsTwKigA4K2C6DG8pO0AE0OXGG2y7fEC4NULPwCvS7/mDz+m7bt3o3Q6tY2yXu+ZvGhNMqS2AK+6qA3Aq3fjV3s0gLfaHojH9W0HmHh4IT5W2h4vAF69WLQSeDc2fUhXTZ7lKHP3zZPaFXrhlb/T+ZffkqfYM4/eSg29dqS3391AF139E1q7YaPz/pTvjaGjjzjA+f9C71UbeCVjyna6F4h5AW/XrllqbU1R715ZGje2reToufaGTu1joy5pGDEsQw29iFauzuaVNAB4S3aXcQMBvMa5xEiDbAcYI0WPsVG2xwuAVy84rQPeFW/9m8ZcNpX23buRtrZl6J5bLm9X6MlnX6KFi5fSjVeObv9b1y6dnf+/8Krb6Et7N9L4c06g5W+uoZPOu44WP34n1W/fveB7cQNeWcjGcy51e95NzSm6bXpNZMArC9ncrdYE4AXqAbx6N7tJowG8JnnDXFtsBxhzlY+nZbbHC4BXLy6tA95NzR/Sin/9m1o/3UI//80f8oD34bnP0jv/2UBXjD89T7VPNrfSgSPG0vOPTaeddqh33hsz6Wb65rDDacjh+/u+d9zRh1a9hjdshjcK4F29Op3X8cGd4WUgXrc2Res2pGjlSqI1b3eUh3jV8LqBVsoVALx6N7fJowG8JnvHHNtsBxhzlLbDEtvjBcCrF6fWAa/IsXDxa/SLx57OA94ZD/yWFr/6On2lf1/qt9fudOSh+zkZ3HfWvkfDTr+cXl/4QLuaN9422yl1GD74IN/3xow6FsBL5CyKmzg+TVvbsvSzB3ML5brWZqm1Zds6aACv3g1ry2gAry2eLO88bAeY8qqXvLPbHi8AXr2YThTwLv37m/TqshXUra6Wlvz5dXruhaXENbz//egTOvOiyfTK/Jntat46c46zcG3k0EN835tw/sn06ZbS62B1XDduUsYZPvJoouOG5ToX/H5Bhp58uuOs/B7/e8++RF8flqbb7so4//+vlbljZtzSsRFFGFvefIucc8mLz3n5xZ0om83SBRML6yH2iv3qHKbNyDi2TbgwTXt9oWM+Mkbe5zFyTBi7caw5CtTUpJ14yWSy5hhVkiXbfqkr6TQY5KlAl85p+nRLx7OmsExxjyUEga4CXTrXVO0zWdf2ION5fniVrkCkwMuZ0nfXvU8HD+zvWLTuvY30q8cXOlnUk4470gHNSr28Mrzua3/32jto7z3/xyldOOrUy/IyvNdPe5B2a9iZRg452Pe90aePpPeaWys1pbzrfO/aHKwOGZSho4fk3nr6OV641gGx/B7/u88eWeeYu+9POf+/ak3uQ/rHN9Uwo/QAACAASURBVAT9IMmf4qpVKedc8uJzcoa3LUP03asKf+iIvWK/Ooe77005tp1/Tpb69Mm2z0fGyPs8Ro6pivi4qLYCn6vrRK1bM9QaGGa0L1mmEwCyyiSsc9qd62vpveaWgJfAl4+AQll72M71Xav2mVwJUXl+eJWuQKTAO+fxhfSH519xygg4c/OtMT9wamk71dTQLjv3zCsvKN3kYCODAO/t9/7GAfQbLj+X9j/mPHpmzjRq2GUH5wLfvngKnfqNwXT0kQf4vlfNGl7pkqDW8KqLungOXl0aylHDKyUNH36cpe/f4O0fdde30We35e20hhreYDFt01EoabDJm+Wbi+0/UZdPuWSe2fZ4QUmDXlxHCrzX3XI/9dp5Bxp31vEkLcCe/dU0J7N76HHj6M8L7qbarl30LA442gt4uaRh3y82UpcunenNVe/QuRNuomk/HE8H7tePJt1wFzXssiNNHHsy/XX5Sho17kZ6Yd4d1KN+u4LvVatLg4nAu+JNohn3eGe8ogDeabfXUFNTLosjnR0ChgMOM0wBAK9hDjHUHNsBxlDZY2uW7fEC4NULzUiBl+teu3XrShd+53inldduDTvRNZd+27HwwBEX0KOzrqO+uzfoWRxw9PMvLtumS8Pk6T8n7tTAAM52jDzqEDrr5GHOGTe830QXXzOdVr691vn39ZPOoZFDDy76nsnAy/1s5y9IOz13Rw7LOp0VypnhLTfwunv/8nbDeMVTAQBvPP1WaattB5hK62n79WyPFwCvXgRHCrx/eumvdPWPf0aDDhtIjz25iOY/dBPtvmsvamr+iP73+IvotWfupc6dqlt0vbnlU/p0yxanrtjr9eFHn1D3bnWeO615vWcy8HJ7L4Zcfsn/lxN4n1tENO+JrAPVPXtm6bVlHfXEhTK8+w3I0InHZ6hYH14Ar97NbtJoAK9J3jDXFtsBxlzl42mZ7fEC4NWLy0iBt60tQwsWvkLzn1tCJ4z4mtPDll8vLV3u/P3aCd/Rs9bA0QDejrZk3CXi6edSTu1w38ZUXq9eFXhHjsjQXbM6vvjwe1zXWyrwrl6TosY9kO018PbwNQnAGydvVc9W2wGmesraeWXb4wXAqxe3kQLvkr/8g7rX1dKX+/fdxqo77ptLo0cdS3W1lanh1ZMl+OhqA69kR9li96K1cmd4e9Rnqak5RT16ZOn676WdtmhBgHfooFx5hbx0gVcyv1df0Ua1tQDf4NFbvSMBvNXTPk5Xth1g4uSLONhqe7wAePWiMFLgnTZrDu28Yw/69knH5FnFmd9DjhtHD8/4Pu3VZzc9iw0bXW3gFVisBvCq5RHTb0pVHXhlhzbDQgTmeCgA4EVYBFHAdoAJogGOCa6A7fEC4A0eC15HRgK8H2z6L/11+Vv02BOLqP5z29HQr+VKGfiVacvSC6/+nR7/w2Ja/Ls7qHPnTnoWGzYawJvrmlAK8PbaJUvrN+TG33Dt1m1KGpYuS9PceWniLPahh2TzyiDUdmyS4QXwGnZzFDAHwBsfX1XTUtsBppra2nht2+MFwKsXtZEA75p31tPUGY8QtwLzeu3/5S/Smd86ioYNOkjPWgNHA3hLB173AjppOzbh0jbqWZ+l1avT7Z0l3GUQAF4Db4YQJgF4Q4iV4ENtB5gEu7YsU7c9XgC8emETCfCKCbN/tYBSqdQ2JQ16Jpo92mTg5aypmv2Mui1ZmJKGQw7K0JKX09S1NktnnLJtizRedMaLzyTby/8F8Jod+zrWAXh11EvOWNsBJjmerMxMbY8XAK9eHEUKvLy7WiabcXZWS8orjsDLvlnzdsppVdbYGH57YRVE+Tz8KlbSILu+8bFqi7R164laW/O3BGVQDwq8Youct5T5JCVWTZongNckb5hri+0AY67y8bTM9ngB8OrFZaTAy6ase28jPff/ljo7mblfV4w7HV0a9PzVPloyt4UWrflleKsNvFyTyz162XaxRZXFC3j7NGZo4aIaks4Q0p0CwBtRQFX4NADeCgse08vZDjAxdYuxZtseLwBevdCLFHj/ufIdOuHc71OvnXvSAV/Zm9I1Ha2n2MxrJ5xF3eq66lls2GhkeDuysz17ZGlTU4pOOD5DPespr/WYmuEVF5YCvO4NLPyAd1NzipqbiOp7kFMPjJdZCgB4zfKHqdbYDjCm6h5Xu2yPFwCvXmRGCrwzZ/+Olv3jLbrr/yboWRWj0QDe/HIEdh2XLPBL7bVbaeB9bmHKyQiri9tiFFbWmwrgtd7FkUzQdoCJRCScpF0B2+MFwKsX7JEC7/dvupd22akHXTL6W3pWxWh00oGXXSV1vOI2Bt6uddu2EWMAVV+crT3skCzNX5ByNrCQl1dJQ0PvrLPoLWiGF8Br9k0E4DXbP6ZYZzvAmKKzLXbYHi8AXr1IjRR4f/eHF+jO+39L8x+aSun0tpk/PVPNHG0i8HJ9K9e6DhmU9ezSIJAaxaI1P+DlxWNSZ8zH+GV41S2FCwGvXEfOI7XL0qtXMsuyaE12nUOG18z7BsBrpl9Ms8p2gDFN77jbY3u8AHj1IjRS4F3x1r9pzGVTqdfOO9BhB+xLn9u+e551vANb1y6d9Sw2bHS1gbd3ryyNG9vmqCKQp4LsnTNrnM0dRgzL0PwF+QvFKg28KoCzve4thUsBXsnkAngNuzGKmAPgjZe/qmWt7QBTLV1tva7t8QLg1YvcSIH34bnP0pPPLvG1aNbUy6h7t1o9iw0bXW3gZTmkBMALeNVMJ5cUqAvFKgm8p5+Sof798rO+QYFX3ZGNz/PInBy4c3ZYBV65hgr/yPAadsN8Zg6A10y/mGaV7QBjmt5xt8f2eAHw6kVopMCrZ0o8RwN4vWt43SUNAtdqmUNQ4JXI4ONlxzUv4FXhFiUNZt9PAF6z/WOKdbYDjCk622KH7fEC4NWL1MiBd8vWNlr04jJa9e+19KV+feiQ/fehpuaPqPnDj2mP3XrpWWvg6LgAr+x0Vq0MbxTAy0DbtzHVvt2wO8ML4DXwBvExCcAbH19V01LbAaaa2tp4bdvjBcCrF7WRAu/WtjY67YIbaPmbaxyrxp11PI0/5wR6/sVlNOmGu2jx43dS50527cIWF+CV7gYMhatWpyPbaY397NWlIUyG9+FH0/TGio6eze4uDRLiavcHqV1WSxq8gLff3hkadWr43eT0biuMLqYAgLeYQnifFbAdYODlaBWwPV4AvHrxEinwLlj4Mt105yN0761X0BPPLKFUihzg3fB+Ew0+6btO94bdd91Fz2LDRgN49YFXhVZ2rx/wyt+lLIL/PWNWDa1bn+sI4gW86k50hoVOos0B8Cba/YEnbzvABBYCBwZSwPZ4AfAGCgPfgyIFXs7i7tawM333vJPojvvmtgNv838/psO+MZ7m3T+Z9uyzq57Fho1OAvC6e9rK7mYMk9IfV3WLV/lCoZKGIMCrgqsAL+/oNndeR2YYwGvYzVHAHABvfHxVTUttB5hqamvjtW2PFwCvXtRGCrw/ve8xWvzq6/TIjB/kAe8v5z1HN942m/684G6q7dpFz2LDRicJeAU6VeDlRWTPLkzllTWUA3jV0gQBXndvXwCvYTcHgDc+DjHUUtsBxlDZY2uW7fEC4NULzUiB991179M3z/k+7dawE3Xp3Jm6dOlMdbVd6IVX/k5jv/11K3dgSzrwuheOcThGBbwtLSmaMjVX863CrACv1CVL2zIAr97DoJKjkeGtpNrxvZbtABNfz5hpue3xAuDVi7tIgZdNefvd9XT3L35Pf/nbP+m9D5qdEoaTjj2Svjn8cKqp6fj5Wc9sc0bHEXhZPe7JG7RHrbT48srwlhN42U41m8sbV6h/69EjS01NKeLsLy9684NithEvsxQA8JrlD1OtsR1gTNU9rnbZHi8AXr3IjBx49cyJ32gTgFcyqoU2nlC7NJQKvDyOF4qpJQ2FgHfa9Bpqas4tKCulhrcY8Eq0SGkDgDc+9w+ANz6+qqaltgNMNbW18dq2xwuAVy9qtYG39dMttPRvb9JXv/JFeu+DJlr//iZfi77cvy91qkFbMj2X5UarGziYCrwC4CrwylbH/DevzSMEqkUjmae6K5w6dy5n4B3c3BlrtewBGd4oIi7acwB4o9XT1rPZDjC2+q1a87I9XgC8epGlDbwvLV1O5064yVmo9syf/kz3PvKkr0Xch7d+++56Fhs2Ghne/O19Vbj1Al71b1EAL5czcE9eAK9hN0YRcwC88fJXtay1HWCqpaut17U9XgC8epGrDbx8eW47Vv+57sS7rG3d6l8vyQvYbHuZDryPzUvTa8vS1KM+65QX8M/+/ApTw6tmVC8c20atm/13O6s08PrNBxles+80AK/Z/jHFOtsBxhSdbbHD9ngB8OpFaiTAq2dCvEebDrzuHre6wMulBfy6b3batyTBXWLhB8FhMryy6QSfS80Sn35Khupq8+3hYwR4eWHbxEuwaM20uwzAa5pHzLTHdoAxU/X4WmV7vAB49WJTG3hnPPBbeu31fwWy4ic3XETdmE4segF4y1vSwHDLL7UOVwVer4yzCrz8/yosWxR6sZ4KgDfW7quY8bYDTMWETMiFbI8XAK9eIGsD7++ffpFW/3tdICvGnHEsNp4IpFTxg4IuWos6wztiWIYaekWb4X3xpTTNX9DRsq4YoKrA69U1AsBbPH6qfQSAt9oeiMf1bQeYeHghPlbaHi8AXr1Y1AZevcvHf7TtGd6161N016yOzhpcEtG3Mb+Gd/kbaXpkTgewhi1pkDZnEg1BgZc7NIy/oC2vTdrIERlqbSG678EOm4udL/5RGL8ZAHjj57NqWGw7wFRDU5uvaXu8AHj1ojdS4H38D4tp7YYP6Pwzv55n1fI319D9v5xPU39wgZ61Bo42AXhPOD5DAwdk2mtb1RZeuhleN4xyV4TDDs7P8LqPqRTwem2EsW4DUWtLrvdvUIA2MKysNwnAa72LI5mg7QATiUg4SbsCtscLgFcv2CMF3u/fdC/t0GN7mjj2lDyruD/voG99l16Ydwf1qN9Oz2LDRpsAvLLhgtfGE1EDL0Pm0EHZvEVr1QJembe6Ecaat/Nhl8MFGV7DbhoiAvCa5xMTLbIdYEzUPM422R4vAF696IwUeK/5v3uoU6caun7SOXlWvb+xmY488VJ6fPaPqe/uDXoWGzY6KcArbc2468GJ36gu8D75VJqWvJwmyWwDeA27KQKYA+ANIBIOIdsBBi6OVgHb4wXAqxcvkQLvQ489TVNuf4ieengq/c/nd3Es29rWRrff8xta/Orr9OufXa9nrYGjkwK8sjUxu4BLFtS2ZO4ML3dOaOiVzWsf5lXm4C5JEPeGzcgCeA28MYqYBOCNn8+qYbHtAFMNTW2+pu3xAuDVi95IgXdzy6c0atwN9M+V79Aeu/WiPrs30MtL36BPNrfQ7TdeQkO/tr+etQaOThLwNjeTs3kFZ1bnzuvow+u36EwtpwDwGhi8VTQJwFtF8WN0adsBJkauiIWptscLgFcvDCMFXjZly5at9PtnXqR//HM1bWr+iHZr2JmOOfIA2ueLjXqWGjo6ScDLLuAaWa6d5Z3aimVoAbyGBq0BZgF4DXBCDEywHWBi4IJYmWh7vAB49cIxcuDVMyd+o+MIvA29U04bMe64MOrU3M5pfi+1XKCuLktvrEjTfgMyznbFpQCvCsHFxgeNBrGxa9cstbZuu2htwqVt1LM+G/R0OK4CCgB4KyCyBZewHWAscJFRU7A9XgC8euEG4NXTj+IIvO4+ukGBt09jpj2zy5neYsDqleEtB/C6ewW756O2adN0N4ZHpACANyIhLT+N7QBjufsqPj3b4wXAqxdSAF49/YwHXvcuZl4bRwQF3n36Z50d0Xr3ytK69eYAL9uv7jwH4NUM6goMB/BWQGQLLmE7wFjgIqOmYHu8AHj1wk0beHlRWu9ddqDdd811ZUjay4QMr2RavfrwuheU6QCv9N8VH+tmeKWkIuxOa14xpgIv78B27PAsPbsw5dQcI8Nr3l0J4DXPJyZaZDvAmKh5nG2yPV4AvHrRqQ2846/+CR31ta/SCSO+Rr95YhH1+Nx2VnZj8JM5ycBbDFiLlTTIxhHukoSwbcncGd5CXwD0bheMjkoBAG9UStp9HtsBxm7vVX52tscLgFcvprSB9wdT76Pu3Wrp8gtPo+n3/Jp23rEHffukY/SsitHoJAHviSdk6LbpNe3eEWB1A6cAa1Dg9RsfJgzUDC+AN4xylT2Wf4VIpYhOPbGGdtqpjTa3tlXWAFwtVgrYDjCxckYMjLU9XgC8ekGoDbxc0nDOhP9zrOhWV0u1XTvTTjvUe1r1859eQ9t1r9Oz2LDRSQLe0We35dXKmgq83EXixOMz7RtfoKTBnJtGym4uHZum3XYH8JrjGTMtsR1gzFQ9vlbZHi8AXr3Y1AZevnzzfz+m5174C81/7iXq2qUzHfLVfT2tOvm4I6lLl856Fhs2GsCba/elZlh1MrzcWuyaK8Nn/dTrC4h71TQbFj6JM0d8cuYpaRowAMCbuAAIOWHbASakHDi8iAK2xwuAV+8WiAR4xYS//O2ftG7DJho59GA9q2I0GsAbLfBKOULYELhzZg2t35DrwQvgDate5Y4X4B1+FNHQwVmUNFRO+lheyXaAiaVTDDba9ngB8OoFX6TAK6a88tob9PqK1fTxJ5vp8713oiMP3Y926LG9nqWGjgbw+gOv2hJNygrUul6vkohSgVdACsBr6I3ymVmSiQfwmu0nU6yzHWBM0dkWO2yPFwCvXqRGCrxtbRm6/Ma7aMHCVxyr9titF615Z71T2/vTyZfQIfvvo2etgaMBvP7Aq7YbqwbwPvxo2tkZ7oTjMzRwQOEd5QwMLStNAvBa6dayTcp2gCmbcAk9se3xAuDVC+xIgXfu/D/R92+6l2bffjUN2PcL1Kmmht7f2EzT7/kNLVy8lJ5/7HZKp7fd+lVvCtUdbQLw9uiRpYmXtHku0oqyD2/YRWvqtWV730pmeOVaaia5utGCqwN4EQNhFLAdYMJogWOLK2B7vAB4i8dAoSMiBV5uUZbJZGjyVWPyrvmfde/T0adNogWP3Ey7NeysZ7Fho00AXpaEF4qVe+MJHeCVhWxqmUO5ShpOPyVD/ftlCMBr2M2iLG5ESYN5vjHRItsBxkTN42yT7fEC4NWLzkiB94bbZlNT80c07Yfj8qx6a81/6BtnXU2L5t5OO/b8nJ7Fho02CXhnzKpxtvyVbCpLtak5RY/NTTs7jvFLZ6e1KIBXzfqWC3jd5RPI8Jpx06gbjAB4zfCJ6VbYDjCm6x83+2yPFwCvXkRGCrwLFr5ME384g2659kI65Kv70PbbdaMV//o3zZw9j9Zu2Ei//tn1etYaONok4JWfi907lbkhs29jiu6bnaYgC8RkrHszB4HnIYOC1fCKTeUC3sfmpem1ZWknQgC8Bt4oRKT6HsBrpo9Ms8p2gDFN77jbY3u8AHj1IjRS4M1mszTl9l/Qw3OfzbOKF6/97JbLadfeO+lZa+DoOALvYYcQTZlaQ11rs3TNFYV73sYFeNXa4KuvaKPa2ixKGgy7XwC8hjkkBubYDjAxcEGsTLQ9XgC8euEYKfCKKaveXkv/XPlv+mRzK32x7//QXn12tW7DCZlrHIGXs7J+2WB3OAUF3p/cXkMbm3JlE17Z3GIZ3sk31VBraypQ1tkr5FXgdW98gZIGvYdEkNFcrtDQK5ft93sBeIMoiWNUBWwHGHg7WgVsjxcAr168lAV49UyK12gAbw5yHvx5J3prVc53pQCvLLgLUmYB4DXrHgn65WnpsjTNnZcrO0FJg1k+NNUa2wHGVN3japft8QLg1YtMAK+efhQH4OUpCpRItjMopATN8JoCvCowo0uDZnAHGM6LIm+bXpP3RcdvmJqFB/AGEBeHkO0AAxdHq4Dt8QLg1YsXAK+efgDezxatAXg1Aymmw9UyBfdiSfeUALwxdXIVzbYdYKoorZWXtj1eALx6YQvg1dOv6sDLGU1uOXbh2Da6a5Z/ps32DK/09/XK8B5yUIZGDsdOa5qh7jncazc9ZHjLoXQyz2k7wCTTq+Wbte3xAuDVi51IgZc7NDT+TwONOmGonlUxGl2NkgbpZ9prlyzV1pIDvNyKi1uN8csr01YN4PX6uduvLZluDa9XyLjLMWIUVrExFcAbG1fF0lDbASaWTjHYaNvjBcCrF3yRAu/UOx+hde9tpGk/HK9nVYxGVwN4VZBjqcoJvMvfSNMjc9LUb+8MjTo1Qw8/mqY3VuTAWu1+4FXSwMe4a4UBvDEK7gCmhgFe+VLDp0UNbwBxcQhqeBEDoRQA8IaSK3EHRwq8K976N5150WS66Zrz6YhDB1CnmtxP7Da/4gK806bXUFNzimTb3aCL1twLv9Q6TC/g5azz+As6evsCeG2O/vzNJGTDD78ZA3jtjoVyzM52gCmHZkk+p+3xggyvXnRHCrx/XLyUZj74O/r7ilXUra6WBn5pzzzrfnLDRc7fbXrFBXgFNgRKygW87rZiJgAvb7Ax8CtZ1PGW4cbzy9h7XQrAWwYHWH5K2wHGcvdVfHq2xwuAVy+kIgXeP730N1r2+r98LRpzxrFU27WLnsWGjQbw5vfhLQa8al2vmiEuZw0vhwzbNXRQNvCWyoaFmbHmSMkLG1hsgw8Ar7FuNNYw2wHGWOFjapjt8QLg1QvMSIFXz5TKjeYd4Dp3qqHOnTttc9HmDz+m7bt3o3Q6t2uY+vJ6D8AbDnhZT/cCOv5buYGXs7xnnALgjfou8ytx8brO5Kk11NqSu69Qwxu1J+w8n+0AY6fXqjcr2+MFwKsXW5ED77//s4EenvssvbX6XRo++CA6ceQR9K9V79I/V75DI4cerGdtwNEbmz6kqybPco6+++ZJ7aM2t3xK35tyN73wyt+dv51x4lF06ZhvUSqVorff3UAXXf0TWrtho/PelO+NoaOPOMD5/0LvAXgLAy8DEb94O2N5VQN4+donHJ9xdvoqdTe3gOGXqMPCAK/4nQX68r5E3xmVpc2tHfXeiRIOkw2kgO0AE0gEHBRYAdvjBcAbOBQ8D4wUeD/6eDMNPmkC1Xbt7NTqfuOYw2j8OSfQq8tW0FmX/phemT+z7DW8vHBuzGVTad+9G2lrW4buueXy9ok/MOcpWvTiMpo19TL6pKWVTjn/h3TtxLPofw/8El141W30pb0bHXuXv7mGTjrvOlr8+J1Uv333gu9VG3h79szSa8vSzmI07qbAL6+2ZLyt66ZNWRo4kKhnfXab7gl+YRR00doLizvRgmdypQOjzy4MMV7AK90fgowPGvJqfSmP4Z/cFy6qoR49sjTxEoBWUB0LHacCbzHfqcC7Zx+isWMAvFH4wOZz2A4wNvuuGnOzPV4AvHpRFSnwMlA+s+jP9POfXk133v9bSqXIAUgG4YOPvZAen/1j6rt7g57FRUZvav6QVvzr39T66Rb6+W/+kAe83EHiOycPo2OOzGVuf/bQ7+mdte/RleNH0YEjxtLzj02nnXaod94bM+lm+uaww2nI4fv7vnfc0YdWZeMJtS1Zn8aMA3ECc37A65Yt6kVrusAr4FQMmsIEjxt49xuQcb4cBNUozLWScCzXXzc3EdX3yH1p4heANwmer94cbQeY6ilr55VtjxcAr17cRgq8V9w4kz7feyf67nkn0R33zW0H3rffXU8jzriS5j90E+2+ay89iwOOXrj4NfrFY0/nAe+QkyfQnVO+S/332sM5y4KFL9NvnljkZHmHnX45vb7wgfaz33jbbGrotaNTluH33phRx8YWeKVN2YRL29rhxUvaSmV4KwG8sisdgDfgTeQ6zMtHQYFXXazIp0WGtzQfJG2U7QCTNH+We762xwuAVy+CIgVezvDO/tUC+tXd19Mjc591gHf0qGPp1pmP0m+feoGW/H4G1dTkMmzlfnkB776Dzs7LMj//4jKa8cBv6YYrznX6B3PJhbxunTnHWbg2cughvu9NOP9k+uC/reWeyjbnX7kqRbPuS1GfPbLUt2+Wnv1jmoYOzjj/5ddNNxbfRnfmPSlatSZFY8/NUt8+HfW17ov94TlqP/8xQ4heX56m2Q/njuJr8t/4tXBRmuY/TY5NF4zxPx8fe+UPcnaq4+U6QcaHEVyuxWP43DznoBqFuU4SjvXykfxN9PXzvcSs6LRnX6KLzidq3VI8Vk3WdtulrSZbGz/bdvhcV9oY8Blb+KkTv7nD4vAK7Pi5rlX5TA5vaWkjeH54la5ApMDLi8K+ffFkpwaWa3i5lpcXkPGLd18bNujA0i0NOdIvw/vTH13q1Pfy68lnX6LfPvUnun7SOXTUqZflZXivn/Yg7dawM40ccrDve6NPH0ktn1a+FvTNt4imz8w4WbK99iQHNEccnfsvv+64ufiXilkPZOhvrxN96xtpGvw1f3Gf+EOm/fzHHpMmuTaP4Gvy3/g1/+ksPfGHrGPTd8cVvv5Fl+cgRx0v1wkyPkwoyLV4zA49iTZuCq5RmOsk4VgvH/16XoYW/r/c7Av5To0bPnavvimaMD5NmUy8MSXe1psftXVdamhzwGcsvnyY789yW1jbpaYqn8nlnpecn+eHV+kKRAq8bMaWrW00/7kl9LflK6n5vx/T/+y6iwONX2jctXQrSxjpBbznTriJTjpuUHu3iBkPzqP1722kqy85k/Y/5jx6Zs40athlB+dq3754Cp36jcF09JEH+L5nQg3v/gOzTucB3vpXtvz1WrTmlpAXsck43jLY7+UuafDbaMDEGl6ek7pQSp1jEI1KCDurh3iVNKi9dQvVX7vrqVHSYHWoRDY523+ijkwonMhRwPZ4QUmDXqBHDrx65kQ32gt45zy+kH634AW659bLiXvxnnTetXTdxLPpyEMH0KQb7qKGXXakiWNPpr8uX0mjxt1IL8y7g3rUb1fwvWp3aVA3U1jzdi7HEQTmWlpSNGVqLQOHtgAAIABJREFU7ttioePjDrwMWn9ZRu2L1STCgmgUXTTacSYd4FU3qGA1ALx2xES5Z2E7wJRbv6Sd3/Z4AfDqRXTkwPvJ5haat+AFp+/uxx9vdhZ+DT18f/rKPl/QszTkaK7PdXdp2LJlK113y/309KI/E9t51snDaNKFpzm1uhveb6KLr5lOK99e61yJyxykb3Ch9+IKvGr202bg5Xm++FKa5i/IL7MA8Ia8oZSODLyJxzVX5Ep5gmZ4VVjmL2YA3vD6J3GE7QCTRJ+Wc862xwuAVy96IgVeBsrjvvM9p9UXd0Lg8oAlf1nuwOWkC06lc04boWdtRKO51rhTTdpzp7UPP/qEuner89xpzeu9agPvGadlnEwtQ4jsYhUU5oK0Jot7hpdDxv1zOv/t3O9kqLEx3gumIrodAp9G7cggMQbgDSwfDixBAdsBpgRJMKSAArbHC4BXL/wjBV7eYe22u39Fz8y51dmwgV/ZbJbuefgJ+snPfk2vPnU31dV20bPYsNHVBl7e5MFdpwrgzQ8SAG80Nw2ANxodcZbgCtgOMMGVwJFBFLA9XgC8QaLA/5hIgfeqKXc7GzdwNld9ycYTv5/9Y+pT5o0n9OQIP7pcwMuLypa+lqKB+2Vp4ID8TKS68YQO8AbpxVuODO+dM2to/YaUs1mGbDlcjj684s2161N016z81a3I8IaPdS/gnXZ7DTU15WrHCy1aQ0lDeL0xwv5FSPBxtAoAeKPV07azRQq8nMl1FovdcU2eTi8tXU7cIeHPC+6m2q7I8AYJIgGEQw7K0MjhhYFX/VmZzx00wyvjCsGfG3jVDQRUYF26tDPNfTwbaGthuW6lgJc1cWfBeSvm1lYibivl/kIRxD9JPMYNvO7MeSHgla2jOZ6XvJxGDW8SA6iEOdsOMCVIgiEFFLA9XpDh1Qt/beDlRV7N//3IsYIzuRdcOc3Zvvfggf0duP3P+vedkoZvDj+czj/z63rWGji6XBneQhlPd4a3ksCrwqMKrO+t60w/vbt04JWFZVFuLayGixt4ZSvmHj2yNPGSyvdSNjCUi5qkxhnv0Ld0KW84UkO9dsk6GftCvlO/5PAYLForKjcOSECbKTg5WgUAvNHqadvZtIGXOxs898LSQLosfvzO9treQANicBCAN9d6Xxd43RAftev9gDdMRjxqm+J2PhV4+VeBZxemiDsuyJcHAG/cPGq+vbYDjPkeiJeFtscLMrx68agNvNyZYWtbsNXuti1YY+kBvDng7VLTmd7+N1G2Zis19Cq8/5RXSQP3BV63LkVd67JFx5cS8u4suPy0zue6+oo2qq3Nt5kz7KvXpD1rqEu5vg1jALw2eDFec7AdYOLlDfOttT1eALx6MagNvHqXj//ocgHvk0+lnVpHr6xZVCUNUld5wvEZ3zpWdw0ve0yypWpJQ333zrS1LUsft2wt6tQgtcNFTxLyAF4EuGlT1tmAoqk51f4zPJ+Ga6T3+0o2D3q9oDzkJa07vFTg5Vhe+teU0zaPY413+ENJg3XhUZYJ2Q4wZREtwSe1PV4AvHrBHSnwbm1ro0VL/krPv/ias/GE+3XPLZdT9261ehYbNrpcwCtwUU7g9YJZt7y2AK/MS114pc7VDf0A3m1vNDfw3jc7t5kHLwB8ZI73lzN+32scgNewB5mh5tgOMIbKHluzbI8XAK9eaEYKvC+++jqNmXQzDRt0IO3zxUZKpXLtiuR15reOpq5dOutZbNjoIMDr/Fy/nqhrLQX+uT4M8D42L523dW7QLg0A3o5gUrPVKqS5/25Y+FXUHBVcBXLZAF7Adtv03OYnsgMbZ3XXrU/RiOEZenJ+2qn15cVtxw7PEoMygLeirovtxWwHmNg6xlDDbY8XAK9e4EUKvNdPe9Cx5rqJZ+lZFaPRQYC3lAVZYYDXnbUE8PoHkF+G1w22k6fWOD/BA3g7tFSBVxaq8bscb+5d+6Q/L4Px4iW5xW280I1fAN4YPeCqbKrtAFNlea27vO3xAuDVC9lIgXfarDm0qfkjuvGKc/WsitHoIMBbyqYKAN7yBIEbePvtnaE3VqRpvwEZOvH4jsWXXnXK5bEoPmd1byMsWdvxF3Ts9idftlT9Vq3OZXil37O8d/PkLG1uRUu4+ERA5S21HWAqr6jdV7Q9XgC8evEbKfAuf3MNfeeSH9MPJnybDtyvP+28Y32edZ1q8ne70jPdjNHlBl71Z2KZsTtjXGqGV3rfumFPVdar7MGrvtX0RWsyJ7dWfi21kg68vDtdawtR717UvpjPC3ilxlzN8HIJz5SpuXud9eUvFFzecOHYNqekB8BrxrMrDlbYDjBx8EGcbLQ9XgC8etEYKfBubvmUzpt0My39+5ueViW1D69Ohld+MlYFjQp4g5RalAN49UJWb3RY4OUM8KhTg7Xd07PMrNFenTSCAq+6A5u79IFnCeA1y9cmW2M7wJisfRxtsz1eALx6URkp8N7/y/k048F5dNG5J1C/PXentGvR2sAv70W2ZXnLleGVGkgAr16Au0e7t8OVNlnqjmvqMeXa+S3aWUV/NoFbtXvFjFk1TqZWfcnW12qGd/kbaadrA7/41wNuBafGMYA3en/ZekbbAcZWv1VrXrbHC4BXL7IiBd6rptxNu+zYgyaOPUXPqhiNLhfwqjuDuRehIcNbeoC4gZd/Zr9rVu7nd9EZwNvRSkxdtOferY41k/flPa7TlXZl/D5/YeD6XQBv6TGb5JG2A0ySfVuOudseLwBevaiJFHjv/sXj9OqyFXT3zZP0rIrRaABvboeyMDW81XSvG3i9OgwkDXhXr8kBaeMeHbvNeXWpCAK8arsyAG81I92Oa9sOMHZ4yZxZ2B4vAF69WIsUeNdu2EinnH8dfevYI+mrX/kibde9Ls+6L/fvi5KGs4OtSq9EhpcXJnF2s3evLI0b622XbTW8XsA7+aYaam1NtW8xzLuy8W5gAmyjA/pM71as3mh3SzG2xGvRnhfwMuD275fJO37hopr2zC4yvNXzqw1Xth1gbPCRSXOwPV4AvHrRFinwcluyex950teipC9aU+tEi7ktDPCqgKb+dFzsGirY+PXuLQS80mYq7hle9wItdWFbEmp4dYDX3WpMFqlxbS9vjc1dRrifcdeuWbrmytyXKtTwBrkzcQwrYDvAwMvRKmB7vAB49eIlUuDdsrWNtm71z2DW1XbRs9bA0WFKGsLAaBjg9cpaBpXKC3bUsbYBrwpcPeqzNPHStvatbwXeALzBM7x+wKt2Z3BnygG8Qe9OHGc7wMDD0Spge7wAePXiJVLg1TMlnqNtAV5WX83YijeCbD8cpwyvCrySvU1yhndTc8rZFtjtf4FSd59d91169RVtTp9ed7mDdL+Q49VMOYA3ns+6alhtO8BUQ1Obr2l7vAB49aI3UuB9eO6z9PjTi30tuueWy6l7t1o9iw0bXQ7gldpamaobRN1dGqLI8CYZeB9+NO1sjsCQ1tScouXLKa/9VtCtmg0LzUDmqLEjcaZCcDHgde+spsasu1uD1EIDeAO5BgehpAExEFIBAG9IwRJ2eKTA+/LSN+jvK1a2S7hlSxu9s/Y9euzJRTTqhKF0xfhR1LmTXbutlQN43QAL4I32rhTgkh3m1Cw2L7hyv5IGvF5dKrwWrLFOAN5oYxNny1fAdoCBv6NVwPZ4QYZXL14iBV4/UxYsfJl+9JOf0/OP3U7pdH7jej3zqz867sCr7p6VtJIG6SEL4M11pBD/u4H3xBMy7WUP6h3Xa5csjb8gfyGamuF9bF7KyZjzCyUN1X9WxdEC2wEmjj4x2Wbb4wXAqxd9FQFe3nL4gOHn04JHbqbdGnbWs9iw0TYB74hhGTr04PxtdG2s4RXIB/ASeZU0uIF36KBs3mYScgt6Qay8x5lf9cuUZNP5fZQ0GPYQM9gc2wHGYOljaZrt8QLg1QvLigDvP/65mk4+/4f0yvyZ1K0ONbzFXFbJkgYVStRdtcRGm4FXAF/auqk9Y1UfmVLSwLW1vE0vd5cYOCD/i0mxmPJ7X4010UP9G7fSO/Eb+sDrtWPbzZOztLk1WF/qUueHcfFWwHaAibd3zLPe9ngB8OrFXKTA+/unX6RFS5blWbSx+UN68dXXaejX9qfbb7xEz1oDR9uU4U0a8Hr9hO8VYqYAr3uxYhS3gwq34n93X2fZLphLGA47NOu5KYda4zvh0jbqWZ/Ny/ACeKPwVvLOYTvAJM+j5Z2x7fEC4NWLn0iB9w/Pv0ov/vn1PIvqunahrx38FTpgwN7UuXMnPWsNHB0EeNUsahB4CpvhVVfVs0RBriFSJjHD6w4jt97u98PoWc4QlWx7lJtheAGv2oeY58OZ3/kL0sSbSYwc3rGrmleZghp/frGFkoZyRold57YdYOzyVvVnY3u8AHj1YixS4NUzJZ6jwwKv18Iw98zdwFGsSwOPL7RRRSFl1Wt5ZXiffCrt7JjlVd+rnre+e2fa2palj1u2xs6RbuDlkgGGOenYkHTglU0kJD6KbTssegF4Y3crGGew7QBjnOAxN8j2eAHw6gWoNvBms1lq+u9Hgazo8bntKJVKXpeGYp0QigGvGza9ftouFXg5O/zHhbnaUC/gdW/K4OfoOAOvO0Mumcygcw8U/BEcVKkMrxqvbDaANwLn4RQlKWA7wJQkCgb5KmB7vAB49YJfG3ibP/yYDvv6+EBWLH78TqrfvnugY+NyUCUyvG4QjRJ4WedCtaFBoS/OwOvOkIveQedeqVgV4O1am6VrrohmsZdaryslCu6eu1EAL2/qIQvtUNJQqYiJ/3VsB5j4e8isGdgeLwBevXjTBt5MJutsLrHtK0tbtrbR/b+cT3Pn/4kOHtifZt40kbp06axnsWGjTQPeUuo7Abz5JSGmAy/fAlGVWaglLRw70oKMF6jxa/2Gjl9kpLRGgFX95cHrFwYph+HzqGU506bXOP15v3c5UV1d/EpgDHsEWW2O7QBjtfOqMDnb4wXAqxdU2sDrd/m//uMtumrK3fTeB8101UWj6MSRX7OunIHnDuDNRYCNGV7Zcvj0UzLUv1+GeMvn+U+lqXevrLN4q9IvFU7LDbwMv/xa87Y/8KoQO/mmGmptzR0rtqn2qsdK5vzC0UQNuwJ4Kx1Hcbqe7QATJ1/EwVbb4wXAqxeFkQPvJ5tb6c7759IDc56iQYftR9dOOIt67dxTz0qDRwN47QBeyTrybARw3T2Iy9EWLExoVwJ49+mfbe/IsHZdKjDwenUiAfCG8S6O9VLAdoCB16NR4I+fbQl/xgldAiWhorlq5c8C4NXTPFLgfXnpG/SDqffSxqYP6fpJ59DIoQfrWReD0eUE3q5ds07WLEwNL0oaSgsar4WFbuAtx6KxMNZKxlnNovqN59pcLhvgulzuiev3cpc09GnMdafgmFu1Op0HvBeObaOGXtn2jiBeWVtkeMN4FMcWUwDAW0whvM+/vN01q8YR4p7pnQG8CAlfBSIB3g8/+oSm3f0rmvO7P9KxQw+hqy4+g3bosX0iZC8H8Ap89ds7Q2+s6Oh/KoIWWrRWCvDKA4N/qh83Nn8xVNCFW3EvaVCBV8DuxZfSTrZTFnOFAV6G05aWFA3cL7pd0VQbr76ijWprcyAr2Y3BR3T4To6VbHUUwKuWKjAMjxyRcQCYX8jwJuJxV/FJAngrLnnsLqi2lQTwxs59FTVYG3g3t3xKx5x2mZPVPfX4IXTEwV+hT7dsJW5X5n4NOXx/6twp903Mllc5gVdWx7sh1gt45Sf5UoCXfSGLjty1oUkEXtHArbMAL2+3O/GSwl0Spt1eQ01N22bndeLer72dl+/kWPXXAWlB19pCdPqpuRpkd4a3ri7rfMliUF68JL+koVDdcDHgVQEdNbw6UZCssQDeZPm7lNkCeEtRLZljtIH3o48307fGXBtIvV//7HrafrtugY6Ny0FhgVdtz+Q3RxVW+OflIMArYwC8pUXOY/PSTi9ifhUDXvUYr6txZnfK1NwXO+npW8gqrwyt1/FewKs+7FUg9QJeFW6lw4IbePm6vFCNyxVWrs62b75RbM7FgNfLNixaKy1WkzQKwJskb5c2V/UZhgxvaRomZZQ28CZFKL95hgVer80d3OcG8FY+quShye24xl+Qy97KhhSS0Q1aQ6tCaJAvIH7Zdb+44L9L/WypwCtx6N7Vj+31Al7efW7ipf5ZbQBv5WM2CVcE8CbBy3pzBPDq6Zek0QBeTW8DeHMCxr2G168+V2B08KAsLV9OtG59fustr/BxZ01Hn+0Pimo2uFirsWIZXq9FZOoXLK+tft3Ay5tatLakiEsQFi+h9gxvMXCXc/NCy2uuzM13+RtpemROftac/46SBs2HToKGA3gT5OwSp6r2+0aGt0QREzIMwKvpaACvXcDLCwVHfVbfyjNz7zom4VIITtXyiGK7oqkZWhVYvcKyUCcJNevL/y81xGpJhRfwqraq1+T5hQF3r5KaYtlnlDRoPnwSMBzAmwAna05Rfa4BeDXFtHw4gFfTweUA3hmzapxMItdZcpeAStTwysYB6uIiNRtXDMbinuH1C4M7Z9bk7TYWBHjFf0GODQO8ArF8XqkF9+t1K6Cuxo4K7+7d5NzzB/BqPhgwPBIFALyRyGj1SVTg/b/rOtOn2c3Wzhd9ePVcC+DV0y9Qzz+vzFqhywqYTLi0jW6bXkPurgBeXRp0F635dWNISpcGP3+ovnNnQOXfvOhs8ydZGjIo67QKE/9JH2X5EuHltzDA6wWsftv36gCv1DGrMF1s8V2hDK9aF61+ibI5w/vIo2na3JKiEcM7WrdpPmoSORzAm0i3h5q0mgi4/KJOtP0OLaHGx+lgAK+etwC8evoFAl4VVIqBA5ujLmLyWtAE4NV0WojhfsDLX0ZkQwfxEWdde9YT3Tc7TQx5tbUdHQ8aGzPtJQJq1lV6/bJJxbLoxTK06ng38KrN2flahTK8Yp8K48UWWxYCXvcvFEmo4RX9i/k0RCgm8lAAbyLdHmrS6nMRwBtKusQdDODVdHmQkgb1hiy2+AfAq+mQiIerGVT11F5wyfW/fRqpfbOKTZtyfWzlWK+FcX4lCV7TcMcRn7uYTV7wKsDLC+aWvJxbVKa+vMYUAzcv4OXzr1uXoq512fYNKvg6AN6Ig9Ti0wF4LXZuRFMD8EYkZAJOA+DVdLIpwCuLj4IAtdeUUdLgHQjuLgZylACg2mWBtW/onXUgkuuv/7G8ssArvXXVL02ye56aSRbgdW8dLHOTXyHUDK/sPud3u4QpqbEdeNWYKPZFQfPxY/1wAK/1LtaaoPuXK2R4teS0fjCAV9PFpgBvmG1vAbzBnV4MeFUoZLjs2rWjjOHZhd7Ay1eXLg9qBlkFVi8L1UwGl0ys35Cf4VXLDtRj1QVo0meX/9va2tFmTb2enMevy0Kh+Anyhct24A1Tlx08EpN5JIA3mX4POmv1XuMxAN6gyiXzOACvpt9tAV7JELt3gkv6ojXOIDw5P+2UJqgvr40f1Pd5odpDv8yNk2O9NmcIuqBRzRr6hWwh4BX/ctkFbx0s4MvnYvueeCrVDtByHt54Y+nS3NV4QV6hFzK8HeoAeDUfqspwAG90Wtp4JgCvjV4t35wAvJraVgN4ly5L09x5adpvQIZOPD7jzEA3wyvj3YuTkg68Eh7ufrxeW++qocRZVbd2YYBXjpWsr/vB7hW2Kqhydw95qbbwMbJdtUC8+j6POf2UDPXvl4uroC8Abzjg5Xt46WspGrhflgYOCKd1UJ/YcByA1wYvlm8O7l/gkOEtn9Y2nBnAq+nFsMBbbCMCNkftzND+8+/YtvaFP15wCuDVdGSR4V7A+5dlRK8t23bRF5+KIVLKFbw6IkhJg1+GV/4u9bTqrmV+pnqVIogt0rpHejvLOaQEwWtTizCKAng71AqyENHvC2YYzZNwLIA3CV4ufY4A3tK1S+JIAK+m18MCrwBIoct6Aa+6+AXAq+m0EoYL0PWoz1JTc8rZ+OEvS3M1ul4vtW62EPBOnlrjbOXLL69tgAVI1S80ftf0A14ur5gyNZfx5TjitmkA3hKCIOAQAG9AoQIcBuANIJJlh3ASgcupBh/hvyW7TNm9UyQyvJYFQ8TTAfBqCgrgzQlo605rEh5cy9u6OUX/eIOcLgwMl1wLyzviBQVeNUssfXy9euvy+QSEZdORQsArG1x4dVfgc3GJwiNzcpDrBl4Zo2Z41R7DQW8PZHg7lAoDvO6trIPqnZTjALxJ8XTHPMP0sHb3SQfwJi9ewswYwBtGLY9jVeDlb6XNTUT1Pah9UwIe4v45XH7O9rs0MryaTinjcDW7zrWwXi93VpbhuGfPlFN3LS/J2KuxodZku7ssqDW9vN20+lI7L4w+u43c9b5q3e7QQdm8DG+h7HMYGZMIvFyHy9l+9ptsQsKaPfxo2vkyJF8weNMR90uOCdLVIowfbDsWwGubR4vPR5597vUk8ne1RaK6wQ7/8gXgLa5vko8A8Gp6XwVegSHOyvWoJzr3rNxPMnEAXqkRdWecsGgtP0BKBd4XX063ly7wGQVC3eDKwOqOGc64Pja3o+ODWpLA/uJ2aLIQzQt4OYvLWWmGKzfwSlcOrwV1YW4NGR8kY2lLW7JivasLAW+YLwhh/GDbsQBe2zxafD7yeel+lrgzv/xM43US/AvXoQdnnGfg14en6cCDPi1+kZgega2F9RwH4NXTL29rYXcBvVcWjy+nZvK8Ll9Khlc6N5SaMfLarphtA/B6A69XH1w50ivDK9lgGVcIeN0tyNQyBLUeV4CK/8sQ7LermmSA+Zp9G1N5Gd5CLdPC3BoSJ8W2IFZj6sLRRA27bg1zGaOOdXfSEOOCLAAE8AZzJYA3mE7VOirqbiPqr1NSziVzU4G3vmeWpBMNP9/6NAJ4qxUDcbougFfTW14ZXjmlG3jV3qeFyhpU4JWfPtVWUV6L1vyANej0ALzBlHKXCzDAcgsvXmjBP2/zS8BTdjfjLzjSzUFiQLKu6lX9gFUFXo4b9RcDfq8Y8KqQ3b8/0V2zOkoxpF5XF8AkTpMIvO45qwsR/TYT0dU7WLTG/ygAr9k+jLrbiPv5Kp+TXC4ogMv3VEOv3Jd8fraNPjtDi5cQMrxmh4oR1gF4Nd0QBnhVWAkKvIU6MqgftABeTUcGHO5+IHuVBBTKtPJluNZM/fLjzgy7ryGtxPjhPv6Ctm2AV7Id0vLOvY2wnF++NLnrg/l9aaFW6i8EYT74bCtp8Ks1ZF39vgAAeIPdcADeYDpV66gwv+wEsdH97PPa4Ef9pcr9axpKGoKonNxjALyavgfw5gS0vUuDhImaaeC/uTOk/DcpWXE/vPnh3NA769TTSmcFPl4ysH6grC464xpdd4aXF0WpCzoeeTRNTU3bdo9w/+LANlxzZa5muFx9nL1ur6QCr/rzr7S0K/ULhuZjKzbDAbxmuyoM8PJzb3PLtos81Rn6JRTUvwN4zY4Jk60D8Gp6pxDwys+ZaonCtOk1zk/fhVo/qccHzfDKFrgMVCOHh9+5SR4onCXkn4tGDOefjbKo4fWID/EP9+SdeGkOGL02kHA/vNUFZupp1c0gOPPvztDKdsAC0hJDfA43xEoLMobZ3r1y2WR5cf1vbW22HY5V2JI4K1Zf7ne7JDHDK6ULahbX/YVIfU/VaNXqju2qi3Vt0XxExXo4gNds98lzL8hzw6/dGN8z/OJOJ14dZnhbc/Xv/Dzs00jE3WqkraLcW8jwmh0v1bYOwKvpgULAq34TlZ+jgywCKwV4NafhDFczhwLrQezlsUnJ8PJcJ99UQ62tuUyFbO0cBHg5HviltjMTIPLyufhUssFeLcQEeO+cWUPrN3SUSnhdS8BKbeUjXSHCAKtXrIUZb3qGN+hCHK/2SX4f2KyZqtFrf+3IwgN4/Z9eAN4onuzlO8eMWTVOL/Igv1R4Aa/7ueH+si/PPHVBuLpIzf0+gLd8vrbhzABeTS8GBV73Fq7qzmmqCZyp5UVFAshBM7ya09gGeN1w5WevXDdJwCvAJvW7rEE5gVc09qoXdndZUBeo1dWlnCwIv9RstBfwMqitXJ11ujh49Y0tFl82AW/QBXhhgVfqpNVFjKwrgBfAW+z+MvV9r2eJn61ewCv3mjtT6+4tDuDNqYq2ZHp3AoBXT7+Cbcm8ao2KZUzdi8+qBbzSA7GYvUkEXmeDkU0p6t0765QIqNk7/n+vLX5ZzxHDs7R0aX6GVyBWzfAKGKl1vnxegVt1O02BJfeOQ2r3Bh6rZmD8Grvr3Ao2AW/QukSvfqGFMrzqQjW11ATAC+DVufeqObYU4FU7DrkXb7p3lHQvSuO5ctndoQfl2pAhw1tN78fv2gBeTZ95bjxRn23fgWn/Afk9UosBpBt4pb+u+vN5GLgIMz21pCFoRjqJwOulqZqBkHIQ7qc7Y1auXZnUz7p/shOIlbrcxj2ytHY9OZtUuDs5SN23ei2BJa8e0GynbFLhtYtbkBZiQeMnTExKVufsM4j6fsG7Dy9DP/9UKrXkQe2I4rigdYmFSkPEDlVjAG9476CkIbxmlRxRCvD63RNcXuUHvOqXfPkCz18aBZ5Rw1tJr8f3WgBeTd95Aa/6c4zsbCUA6dVXVzXBDbxe7cbCwEWY6XntCFcM0AG8OQVU4CxU/uHXdsedoVUf6qKxwK3sisd/9wNe/rt6LbX8ohwZ3jBxJlodNSRLRxyeq2t2v0QPNRsU5ho6xwZtGQbg1VE52FgAbzCdqnGUlN/Js0rWA/jZ4vXckXtNNplwA6+cy73RD5docSJBnrUA3mpEQPyuCeB1+az5w49p++7dKJ3etq2T13thgbcYrAJ443cTuYG3UAeOMMAr3Rn4/GoLMfUcArzuzLEbeCXDzOeSD55qwKSqVSHgrRSUcxZ+3Xr+mZScriT8qjTwqr6JZ/SXz2oAb/m01T2zLFgLArxq9xI1w6ueg59Zksn12onSy14BXnn+HXWQoLsKAAAgAElEQVRkmo44ElsL6/rW1vGJAt4XXvk7nX/5LXm+fObRW6mh14709rsb6KKrf0JrN2x03p/yvTF09BEHOP9f6D2bgNerDvTZhSmntRUWrRV+BMgXGXVxmNeIMMDLWdm583KLztQaXHXrYQFe9byy4JHH8QdNS0sHzPHfpKNDMZ+W66EXJMMbFHhZixdfzmk0+LMuGGHsVtvxXXNFfou5YivPo8rwVssPYXSq1rEA3mopX/y66i+CvXtladzY3P3DzxzeWZKfhQMH5Fpkuvvocqsxfqnn4GeZ+ouilGOplriTAOeenWufKef/4hdSdOYZW4obH9MjsGhNz3GJAt4nn32JFi5eSjdeObpdta5dOjv/f+FVt9GX9m6k8eecQMvfXEMnnXcdLX78TqrfvnvB97yAV25KfgiMHJZ16ijdxfd+9ZPVzPC6gZczgIuXAHiD3GJca82bCfCe7vIwDwO8UuqijlG3FJZFhH62qB8oxUAtaJlKkHmXckwY4JXV20HmXcriL69suftnVq9rqxkrr37GMsarXpEX3XCNtrwAvP5RBOAt5Q4r/xi5b6S0gK/o/vItOz+6gVd9lqnAe+HYNnpyfq4/tfrsU2ejZn7V+x3AW36f23CFRAHvw3OfpXf+s4GuGH96nu8+2dxKB44YS88/Np122qHeeW/MpJvpm8MOpyGH7+/73nFHH+rZpUG9KeXGjSPw8jykQX6xD+UktSXTufHdGV6/Gly+hvrQL7bAzA/AdGwt19gwwFsM3r2ANYzdsihU/cCWDSXUv7nP6fcFw7140At43ecqdm+FmY9txwJ4zfGolBtwvG5uIXpkTi6RIx1HvH5t8vqbV8cYed6pvyi6M7z8y1X/frnuDO7ngk3Ay7XR9z2Ypt67ELnropHh1bsfEgW8Mx74LS1+9XX6Sv++1G+v3enIQ/dzMrjvrH2Php1+Ob2+8IF2NW+8bbZT6jB88EG+740ZdWxo4JVaI7/MlUkZXl7Zv24d1ziipEHvNusYrZYjqEDlBiU38AaBoqBlAFHNpdTzFAPeMNlqXeD16njh/plV5um0o2siqu9BTls6+UBWM1kA3lKjwnscgDdaPXXOJl8E+VnEPbulLZhspOP15T0s8D40J+X8+sF17VOm1uSZy5B7xmm5z6SudbwjaK4sgl82Aa8sSvb6sg/g1YlgokQB79K/v0mvLltB3epqacmfX6fnXlhKXMP7348+oTMvmkyvzJ/ZruatM+c4C9dGDj3E970J559MW7Z2bOP7+IIMPfmHLI08JuX8l18TL6yhaXe10V59iSaOr6E3/0V5/3a7z/3+J5uJLvt+G9XVEU37Ue4BoF7n68Ny9YtRvKbd2UZvrvQ+E89jrz39r1KTThHPOJPpeAhFYZON57jwso7OBHfdmu9Tnu+uDURf3DNFA7+UdmKFX7f+qIa61RVWQ87L8RdlXETtA4nfY4el6Lhjto1fuQf4ujv0JJr8/fwPPtUe9VjR0s/eDzYRfbCRaLfPU7uWYguPkfFe/nHfd/2+0OEbZ+y0z/z4VO4ZUFdLThZs8NdSdMoJuTle86M22phbIpD3mjiu8L0Vtf5xOl/nmjRtaQu4VToePZG4Vu4p9TOHTyz3BX8WLH4lQ0tezdLJx6fpV/Ny/vF6lslzS71P+bPwgnNraNb9bfTPtzpMdp/L/Xl0yAEpOut07887OT/X8E4YF91nYiSChjyJPJPc+vNpOneK99xCShH54YkCXrd63732Dtp7z/9xSheOOvWyvAzv9dMepN0adqaRQw72fW/06SNpQ1NL+2mf+WOKnluYpiGDMs5/+XXmaVn6xS9TxP1Vzz83Q6tWpehnD6Tb/+22yev9q6/LfZhOuT4HP+p1jhoc3VP+54+kiL9dHnZIhj7fm+jXv+24uS66kP/mf63t6jpRW1uWNn/q3WYq8siN8QnFn26fcg3wPv2zNHQwUV1tlja3pGj5cganFP3vocU/9O++L02r16To2OHZQMdXS0KJ36OHZGnwkdvOS+4BsU/i3ste9dhCx/ndN7+am6alr+XqaWW86p8ffC/j+IJfcn/wvXz04KxzH7fb+EPl3nw+d3+zL5z7/pzcHK/+oTe4Hzci6xxX6P6qlq+qfd1detbShk0dz9iC9mzbWKfa5ht/fX7m/Pm1FH11vyztPzAX5373lNwX/Pm2clXKie/zzs603wfuzyc+F7/fp08275zcguzkb+bfP3wsf+4sXpKm2q5ZuvbqDMnzTETkz9J9+ns/B8VmBt6zv+Pd29t4Z3xmoDwf1WeS2L5Lj9q4TMNIOxMNvLff+xt6d937dMPl59L+x5xHz8yZRg277OA46tsXT6FTvzGYjj7yAN/3CtXwSu2r1PPKzxNefXXVyPB6X92Fi48t1tqs1EhTz8tbzKo1VMUWBKGGN7jq4k93N4We9XpfXnizhrXrUjRyRG7lsqmvMCUNPAf1Z9FVb6eoz+7Z9u2P1Z7Exco+vNqNqQs1edEM66aWNMg5/7iohpa+RtTUlNsQRPpri8Zio9Q5yvbBfvWKbt+oq9xN9Vs17EJJQ3lVl3tRLbFTy4TUe0otmeLOKFx6wC0Yb5ue+yLnvgf4b+62YTIbtQON/M29nbDcm7yRT2NjfgmDW5VqlTQE3ZUxjBe9yqxkPEoawii57bGJAl4uadj3i43UpUtnenPVO3TuhJto2g/H04H79aNJN9xFDbvsSBPHnkx/Xb6SRo27kV6Ydwf1qN+u4HteXRrUxV4AXr0AtXF0mN2JbJx/MeD12jWusZF/NUk5dYPqh3PQDT9Yx2LAKx/OXsCr/o0zVCd+I9d9xQ286gege3GNe2MXt2+Lfam0MRaKzQnAW0whvffVjR5kgZTa09sPeNW6XXdCRv0S6d4YQqxVPxd79sw6bcxU8GVbePFW6+b8Ldz9Zmsr8Lq/xAN49eI9UcA7efrPiTs1cA1v390baORRh9BZJw9zFNzwfhNdfM10Wvn2Wuff1086h0YOPbjoezYBrzuU/BbveIUcMrzBb8TJN9VQa2uqfR/44CPtOFIXeP3agBXL8Eo8q9lUtSODH/Cy6u4V4+62SQKrUQHvtNtrnGxysTnZERH+swDwdmjDABj1Lzfyi4TfPaV2GZH7R1qRyS9U0tdbfiFRgVe2WXd/iZWSH8709qzPv7/UbdCDxjeAN6hSyT4uUcDLrt7c8il9umWL053B6/XhR59Q9251njuteb2nAq+6bbD0r+Vs1JKXO/rw8jXd34hVO6pZ0gDgrczDoBw/g1XG8miuEhZ45UOTSzbc91LQDK9fdwx3NtcNt9yLmheguYHX/ZNsFMCr7tAndsnco1E+fmcB8Hb4rBz9s71+9VDvKfk1Rd1GWCwSSHbbpe6eJsDs1YWGz8Nf6Ljjwl2zOurbi7Vg9IriagNvKZDudzeqWrl3w0SGV+8Zljjg1ZNr29Eq8Ko3vrRtkRFe35S9fsL0Al7JCMoWpOWq4XXPTq7Lfy/2cysyvMEjqxwfXMGvXv0jwwKv3DvFPpwLZUP9+h8XA16+truenRVU+4/yv93ZLXcpk/pF188DXj8fF9twpPreLK8FAN4OfdW2YFziE/bFXxi5xeSI4R01/mo2Vp7x8sVS4pzLC9z3D7/nvi+94JXjl79sNjXn6t/VF39plJ3Y1PuwlC3PgwDvfQ/moPrcs6JbWB10G/IwvlKB1w3/AN4wSm57LIBXT7+8PrzlAl43IFUKeL0ehn5yAXiDB1KY2rTgZ43PkcWAV+JOdiyULFMx4FU/QHlDiabmFHHmhRcDqovbWCnOpvKWy2pmiT+w+aVmc/kDp64uRfMX5LcDcgOvwKpOSYMX8HK98MRLovuAjk+U5CwF8HZ4TKCwWJkLP1/mP5WLVxXuvIDZ6xmv/s292FqNHy/glY0j1LKH9Ru822eo85g2vca5X7t2zdI1V4aP9yDAK/rJl9NC9wI/P7h7y8D9OrZH9jpestnFNsjxGsvXeHJBivrskaVRp3Z8gZEyE/VLhYwH8Oo9wQC8evoBeD/TD8CrGUgJGh4UeN1ZUq8PZ78PB/kg8ls04we37mwu28AvXqTD8Lx2bYr4A7wcwKuWL4Spn7c5dAC82wJvsZ/8/TZj8SqTKQa8Uu/uleGVTKyU8vEXTm5zxjuvqbuN+sWnCrx8/r8sI+rTSO1Z3zBxXQx41ZKmYl8Y+LryXPH6Zdar9KiULitqJld+veVrqz5x/8ID4A0TFdseC+DV06+iwMsPFP7WKT8PFXvwaU6t/abn86CkQVdNjBcFwgIv72TW0Ito7XpyWiGp8ah+OHh9OAlEqmDsZL58srlu4OXscm1tx65S/JPwGyvSxAt21MxVsQyvuvWz6CBZMPm3l/3F7r1ibQ7jHnUA3pwHVWAr9twvBrx+210zyM1/Khff6ssPXt1fJvk4aVfGMMxbD7tfnMHlBbvF4jps3BYDXr9Wa/x3d6tDFTpFK/UXIr9SjGKfke45+dXqemXYZSyAN2xk5B8P4NXTzxd4Za9xrw+zQjWcXh9g7p9Jvc6pOQ3P4YX6AboHIMNbDg/Yec6gwOvuhKCq4V4kxu95AaP7Z1eBTM7QNv83v67Qq16Xj2vonXUWyzE8b96cg1/3qxjwemXI3FliAO+28Q7gzWmixk8Y4JVspB8wSzcQvobf/cZfOOWLpuohKQ0QGOTyG6nT9ToXf0lsaOhoQRYWEAs9DUsFXslOuzWVz1zuJtGnD9HmT3LPAH6pbRF1fonx+7IO4C3f5x6AV1Nbv0VrfFp3LeCQQbnNACSg+SfSwYOyTo2hvAoBb/+9M7Rc+fZd7MGnObX2vqd8nmIPJwCvrtrJGV8MeNUuJn69a8MCr3ywy4YQXmqr9boqGPOx/DMtf4i7F6PKeaIAXr96yUL3njwvbK31BfCGB16vziUqMPtthsJf6LhWnWP/nLMzNGNmuj0b63W/SFy6f73g8ePGZmjK1PzOCwMHEi1dmisPCvKZEuaJKDbsuAPRpRdtu9Oa3wY18lmsQixfV/0iwP9Wv5yq5QtewMtfLtatJ+paSwXbyKlgq15f/btbJ2R4w0TFtscCePX0883wBgFe+VatrrgtBLxuU8sNvOpDAsCrGSgY3q5AGOCVHp9u+SRz5c6S8IfqHxem2hvZy4e7ukuUV4aWz6/W66q7PoUBXnVhEX/hLbToR1oWytxKAd5Cv8KUo29rpcMYwFs54JVFolI36gYvt+/VzwSOQ96wgssV3Pccj5N6X4lXhuKJl4ZfnFYo/gq1+1TvE7VW3r0Q1t2+0O96UnOrAq9kvIOWGfllcgG85XvKAHg1tdXJ8PKl1Xog/rfXzeKuPxSTyw28frVgXpIhw6sZSAkaHgZ4/T503RlVlo8/qDn7ogItf/jyVsvcjYE/ZDnDq77P0Mkv/rmS/5+3ZlYX3fD4QsAr0Cofol7AyyURq9dw1id/tbq7NtJvgZCAhdfKcT/glQxVuZ8R5Q5bAG9OYXX3s2Kt6tSYkM8X9Vnul6EUX0osFwJeL2B1w6PXjoVeO7tFFUNBgderhrnQF1Oxj+uPe/fK/drDAN+7Idu+rTIf465pLta5Qd30RvWJW3d1QRsyvHrRAuDV0883w1vfM/9m8Fso4P5Akgeb3/apqrnl/jAD8GoGB4Z7KuAGXv45Ui3rUT+4pMbOfSL5cFE/NFQ4lePVbYD5/f0HZmnuvFwtnuwUpX7JlLpeztaoLcv4eAZPhk4Zz38TaJV70Qt4123oWGznvn/d2Wa+hl/PYNHC79mgZty8dpWLYzgCeHNeUyG2GEipfXQlLt0bP0iseJUMyb3ld++xPV42uNtlqn3c5Zzy+VZsDqXEaiHg9dKEr+HuUuG+v1U71Hp+/rvsFuc+pk9jx5fqQr+MurX3KtPic6sZaQBvKZHRMQbAq6efL/BymYIa0CqcFmos7dVjVz1erUEsN/CyNIUeIqp0yPBqBlKChruBl2OMF8YcelCmfZMH+UAstEOT+x5zLwITSaU2kUFxn34dtfXurI46nj98vD6Q3DDqB7xe49ketTOD1+r3QsBbrA+xF/AKqMc1vAC84YHXXebT0Du1TceEQsAr73nde/z5wzHcs2eqaPsw1Q7JUvKXW67jDTI+bMy6P6v4Ws1NRJRN0UNzUu0L79TPTbVWl+ft97yRL7deWgYFXi4x4m2UueuL+tkq40V3+RKv7uYo7wF4w0ZF/vEAXj39SgJe/tB84qmOfp68k428igGvuvq1UsArmbBCUgF4NQMpQcNV4P3ylzPtPwsycO67T5Y4G+POALlB02tXJ7/V5CqUqm3HJFMq55bx8nNtMeBlGyWb487w+gGvwDe726t1E4PBunWpvAWv7syP+vOnXy9PndXjbBuXYNT3oLzMe5gQZdh4bVluAZTsphVmvBxrO/BKmUrjHhmSRc1eOnntfuanp3sxFB8nHQakLRj/gsEv968Y6rPenVXmWOf7J+gub2JHOep1vebuBl65vtoKTcBVtFbvE/ULr9eXZwbQ/ntn8xbjedmhfpGVe1ey5bzw/PRTMySL7NQyCcmCey3aBfCW8vTYdgyAV1NHvxreQhle5wNlddr5UHN/sBcCXn4YHTs82/5hWAngDSoPgDeoUjhOBd7dd+uIZ/cHjvpF0OsLodeWv17qSs9cBsy62o4Mr9w/7oUqXotu5EPbvdo9KPDyB9sZp+YyO9K9xat1E//N3dLQnfnhc8jf1Pp++cDkTJIKMsUWnLo1U/VQ6wfDRK78NFxKQ371OnEEXrVrAWsv8F9XyzWguTpQyfIFrWn1W+DE5+aXlARxfD72u1R7ezB3DbrshObVh5rPo9YHq3XDpXzWMKSvWp1yyogOPTj8Vshh4o2P9QNeOY+6EFWeLX5dYLzuTVmU5reQ1n0d/reMkY1w+G98T7Eu3KfY7R+VG9QvzQDesNHgfTyAV1PHQsCr1jC5Hxjywen+QCgEvHxzDB0E4NV0GYZXWQE/4BWzGC65XZ9XZlC9PxjMOHMlq8tlvN+iG/4Q6927I0Pj10De3buXz+u1qMW9KQVnjdQPXbXLidd49UNVSh28Wp9JRwr1w1lAVAUhAV6/GuCgbvdr0h90PB9XqHtEmPPEEXhV/dhPy1ek8uq+1Z2+RCf+deGaK/y7Fqh+Vo+978EaJxsvMetVdyu/XLAtD/0y7Sy64s8dfnktpJTsZ5jev2F8Wq5j3cCr1vfzNSXzqiaZ3MBb6D118eimTVlatTqnpful/tLkztrysfy3f7yRy7qzTfIccy98BfBGHykAXk1NCwGvX2NpuaRXfWwh4OUP9sMO3jZDpTmFSIYjwxuJjIk4STHgLbSgxavGzl0L69XBgYV11y2q4KF+8HkBs9jkbuDP5+WFZ14lDeqxXsDLIHvb9FxPUqnNZwjnD1N1MZvfhyZng4IAb9gsraqxqlGY4HQvBvIbK18K/Hwed+D1+gKjLkJSSxXET2qGXmJWzRBKLKvHiX5qGUHTZ9lfPp5/YbjmyjanXEjKG8Qn6k/+6pdAFXjd3YTCxEKljnV/nrphVp4TDPunn5ZxsuJex7jLHfjLaL+9s/+/vfOOk6LI4vhbliXDkgXlVFQUVERARRBUQCWoIEhSUUAQyRlRkByUIDlJEASUJIJKMqCAp+CBARWBU0TwiCpB0pJ27/NqrKGmt3s6zexsT//6nzvZquqqb73p/vWrV6+obu1QLzWvYvBRynzpCV/+d7GqlDON+MNE72IP8I4dxs8Q7ZgQw+vOmiB43fELG8MbKcGrdtHOEZMuh2arOgSvLVy+LqwK3qSkNJHsXr3CpV3SCl4WinVrhcbVGe121gpe6Tnle+ulUFJ/v2qf1EwMMvyA/86XPJZVey8pSLTL3XwPvtTQCCmiJRMWTdqsL1KAWBG8dkWr6iVU67I4PXQkgUpenRaM45Tp1mR6N9ln7WYgI4M3WtKXjGdNSAp5xnrhh6P9YNAeVmKUsUfPQ2+0uYz/XQ1n0Qpe7ZK8tBezD0Z1vlVBbdeGYjFPZoJX3QTGz40ypYkWLg599qgfI7I9s3AOvVMU5fjDHXQjP0Jk+A+XbVj/8mZ3eHgjb0UQvC6ZuvHwjp2QSPwVrr549Ty82i5a/SG6HJqt6hC8tnD5urAqeC9eDM2Ly2DCvWC0aYPki1xvk5aeIOD2+QXFl7r5RhWORodaaD0/7J05dzawwYwFh0w/Jl9kfA8Z76eOKdzKDr/0+OINX6rg5f+vd3KjnuDVMrIrVtSlYNWzJ+8lx6KKd1UoaD8gwsUQS1vQnhQnGfXulJXyFkyJyO+FvZu8hF+ndmrYE7CEjewNeO449ZS8WACeS6GQGFy9jqmikrkcPBQ6n0anakmGqoDShrPIeHRtSizJT2/Dk2qPalyu7Lu6eVK7GqB+3FndrBaRyXLQiJng1YvL1d5Gb9XHjuANJ3CN7qXdz4NNaw4m32IVCF6LoIyKhRO8Rp4S2ZZ8gejFdIX7kUHwupw0VI8pATPBqxVPamf1sjVoN4jqpVUyS9avt6NcFS7q75H7wF47FsDqy0oua6rL81qRqIpBVQiq8b56L0at4NV69PjvkpvWi2dH8GqPidXzRmqzW6jCqUzp1HR5hOX9peAsf/vl+Gx1iV3yUPugCl6rgtPIuOVchLMvrqsXUsD/LsMK5KlhRvdRP7SYnzbWU88+uC0ZE/7b3ixBwa3GnbNwLVM6LeRjSBVYWo+gfE+o99PzRqoOF+2YvCp4tRs3eVzMh22Aj/3lE+H0Lr1VHzuCVy/zipGdaDeZylALDnPSZorBprXIvLIgeF1yDCd4zWLhIHhdwkd1TxIwE7zhBJqZ4FW9WUaCVQ+a/C3KZUUuo9Y3imHUE7yqIJLiWE3npOdhDrcsyjyOnSCx8Ul6+LQePe6v0SEDejz5fnv2JVBaasDDLkWRVnjr5Sw1K2vkYZaM1Y8PvVhflcWjtbPQnXedF1NmVbCaCV47Akb1eFp1NGjTgsnT+2S/VAGqxubynB4/HirE1GwKXE8enMJ2zpkP+ChtGQfOfR0xKhAiI8Udf4RpBS9nauDT/0peSyJrSTjPrQy54dMKi/+z0S2zPnRUz6j296T+rtk+d+y8HH6k5sZWP0LlCqyZvXCY4ZebA1TKlEmf6k2ddzXWV8+2pBdamykGgjcyVgfB65KjG8ErvRvqDwohDS4nBNUzPQFV8P78S2DDB3u3vt2WIDwvdgSvfBHIl5P6clcFq5lXTr4Ey5cjYi+lVvAa9Um+WOVL02nOUTPBK+NAtTk+1VAOI8GrN3b57FFFFrPUeof1QjEkY6OyRh5mNVRCL85apnAyE7xqn1hssMcuew4KEWR6eYCtClY9R4XqMTQTQKrgZb4c530u5bKQ5V38HHfO4Wyfrdf3NMofMd9LHnagbnzMnjMtOF5tmiyt99+sv5n+gWGxg3qCN9wGWLkCa1RGzyFlpStsvwcPU7q9CdrNtaq4Vj3parpSbFqzQtx6GQhe66x0S7oRvOEyMiCkweXEoHqmJSAFzXXXptGl1IDglRuz1qxNoCebGufsNMoxK19O6stL9VbazVSgFbxGcahaoRruBWs2IfLlxuKfvW/8fDh8JMBGFbw8LvnvalyvDDUIJ0R5uZxDCnh3uXZnOY9RigC5VM7e2Dq1A8voUpyxYHu2RSqtWRtYepdeZ+m5VQUfjzlclgnVw6m3aev2sgnUsMEFgU4KZr2jlbXc9TbDWRW8apgF94k94Zw5Q8ZV8+EBle9OMzyYQ7vzX2/e9by5euX4PSBDHIzeCVreELyXj+cO93vkZwlnSGCvrJ732qng5XnUPhfk80dvrwGXV0Of1BUXCF6zp6a9v0Pw2uOVrrQbwSs3EPDLpcLtgYTkvDSipjnS655eXKDLYbiujk1rrhH6pgEjwWt1U4x8CajeVD3Byy+01WuyUEoKUcd2xjlOjcBLwRzupEH2MM6eGxCgfEVC8GrTqvF/f7MtsPGJ40/3/BZYjpUeIzWtFMcgLlwU2JzFfWFRy+KqcqU0+mlHQOSyMD17Nr3g5fus/pA9pgniPpw9g9uocndauqNp1dzHsh9y7FLEyvtzW8WvCN10F04Eq2LhxusTqPlTAcGrF5Mqha02n3kwJjt/GvXoEph7vfpsI8ySxyNFjza7jpoiTrUVrsP35b/rZfGw84NmRjwWfgeoHyJycxrPcc+uqcEDK9S2tbl3ZV9EzPPZBJHhQx5MYadPXisr55d/A2vXJtCOXVnEypE2nZjVcfGqD3/ocNiIXX5GubDNBK/80JQhGFrRjbRkVmdPvxwErzt+YdOSqTtijeLoVA+N1pNjdNQkBK/LSUP1mBJQBe/R4yTiFuVytpWOyZeGXiyoGqtnpa1wZVjM8qEBfIU7Hld9uZltjgt3PxbYBw8FNsPxpb7s1BOypLdXCkr+X47J5Pyq0nPIAql8ucC/8cVeWY7XZNb8/4sVTZ87lMWbPIhAxhJye6VvvNyO7L8M4eCPAY4rleKYT7BSPany4117Kp6e4NXbdJczJ9FLvS8aClZV7KleeG34hLoRTv0o0VvWVlOqSe+13rxxOwUKBDy/sk2ZNlJ7nC2HlfDcclk1P65sl/suwjMOJRDPNX+kyY8oLhNuxU/16LP986EtdgWa299KZqivDQsw4xbtPsv+qB/MMvxE3WvA/ZAbHaXdyPmG4I3sLEHwuuQZzsNrdmKR9iuQH/hnzwY8BuEecBC8LicN1WNKQNo9v5RZiGgf/madky+ScCmzzNqI5N9VMRXJeEkjwas9eljmIn5tQpbg7nPuB19G3kn1NCgtCxazrVqmBjdDqX/XCjn2pp04FkjNxoKZvcH88uY2uF/yWabtC88dX7wRT15GMcgsBtVnpZrCTG/Tm17Yi1pfjYWVDge1TSshCbLP8iNBepj1NjGq9h0S35sciOPVWxXQHncdLiTH7RHAkfwtxLKtzCp49T7MjUJwtL8FCDVCU0MAACAASURBVN7IWhQEr0uebgQv31q76US+GCB4XU4MqmdaAm7jXtmjxVeVuym4xBvrj0Cr8aF2JkV6H9k7+NmGQKgBe8L5mvb65ZOb5LNCLmHL0BB5EtSJE6TrVdTrC3ujWrcMLJ1rhR/fm0NE1CV36ZmU2QFkm2pGAXXpX32hf/d9FuFxlt5iI8HL92XPpyqOpTdX9eRKr7E2SwSXVUUhi9vbb0uf/5nvs359YCncycX1N21OCHp8pZdWFTdqyjJebr+5NBmGHMiNmOFCarifZo4VJ2PxYh3Ji7nyyoabcIZIjF/vmaAXesX30uZHhoc3EjOQvg0IXpdc3Qre4SMTdb0yELwuJwbVMy0BreCNhFdUijteXg8XfhAtKNEQ3HKpWptrVfuhbJZnV+90LSMOqjjT7v7XZnFQPZdaccxio3z5NCHMWWAm5wuEUMgwDBmbymK3Tq1AjLD0hOltutN6qvVOIONYzbMpoRvMeJwiPnYDHxoRPiOC2aEB3Fe+9EIS+N/V+jx+mY7MKHOI2bzJDx6z34fXTkSL9m9Q2pgZt2j1Q7Yrfz96K1FaD6/2mag9SVHaCmJ43c0aBK87fmFjeK18eatLXKonJNyPVXoJYv2DVtFh05pLQ/JRde3D3SxlmBfQsOAukExUrFia7sYiJ2PQE6pS6KliNNzBAXxfNVtFuJhUKdr4eFO+1GeTjLFW+6S+tLWCV76w5Qe9XPqXYkTy4GeYjO+V7cksCTJ8grMisNdVFZwsbjkOWd0DoWUs6xuFb/DfOa45OTl9PLOaJo+ZPVw7jTgVGHuaV69NCMRDnzAW0DwueeCEXlYJ7qvZvNmxGcnfTiy8nfa9UFb1nvLHVazfj3qb3qRtmwlevY2rvHIDwevOEiF43fELK3itfHlrjz8tee3luDejTWscM8hxc5lp9y0Er0tD8lF1o5Q9PkJgaahawaueECa9f2bL3XwjlTcLojfmBmJ9tfG4XFYVCXovZ1U862Um4P4UL55GeqKZ21dPouKXfsMGqcEYYPYEl789kKmGvbFacax6Tc0Acl2+ZPgFj5WfpxxyIIWqzB4hM2DINrmPxYqn0c6dCSIjRpVK6Q9nMPKay82CHKqgppKTz3I5F3bj1s3Gy/3hfL0yh7RZ+Xj8u1E6vMw0Vmk3euEW6kcjBG90Zg2C1yXXcCEN3LQaSK+XdonFKz9Y5S5nK4LXZZejUh2CNypY47LRkA1IyWnUo6v9lGFxCUYzKFVUaYUtM+Td/DeXCZy4ZXZxeb74GaRmJuDnDV8yZEAVvDJMhMtoBRvXUZdqpcdZe2yvOgYWeU81TQt6ZaVnX7tBS46FX/o7d2alL/8T6CP3jeOYOY2Yeqleaxbhe35LoA7tOE/w5bLaNE9cXy/m1+rBIUZHQZvFjfLz/ttviQoUSIhJ6I2ZnXj5714QvOFCryB4o299ELwuGauCV+afVGOzzAQv317u8ualt8p3mXt4XXY5KtUheKOCNS4bjVQar7iEowzKKHzA7bj1DmWwmmRfzUihZg5gb/DOXQnUsH5ayFG1Wo8we0tlGIK6pK+XGYGfo6dPJtHi5YEPIjWLjcpAPcGKRXiZmwJhJXpHQ2sPleAPAHVMZoJV3le1YZmzmP8WD+E5bu0rVvW1gtdr4R1qmJL2JELE8EbGqiB4XXJUBa/2VBRu2orgVcvJh3es44/sYoHgtUvMv+VVseA1O8/IWVMFWyQ5yXyv6vG0dsfFc2jloBDVe8tilGOcZYYJvaNVxSE85Ugcx5u/QBrlScpOoycH8vCqecrV/nK7HHpw7FgC1a1z+QAJFttrPuTQDQpmnlCZhuTt/WfzsNlGMvW+6rOdWfIhD1aY2GWN8tYIaAWv0emI1lrL+FKy/3ppzCB4IzMfELwuOUZK8MqUKnJzRyRfcC6HaKk6BK8lTCikiSn1mp1n5ASq4kwbKpCR/XB7LxbHHM+qppHTtim9W1oP6cWUHDRk1GXBe+xEaO5eKYStCk31Y8utIJLp8Yz2Wrjlhvr2CKiC186Hi727RK802xNvdFQzzSAPb2R5Q/C65GkmeOVD0ex4Qm0ePq8tjUHwujQkH1WHh9faZKuC14svcGujDJSSOYS1WS54V3qbroGjhdVDLvi/ZYiD2bNV7QdiaO3MirfK6h1C4q0RpO8tBG9kZxCC1yVPM8FrtXntznWvveAgeK3ONMpB8FqzAVXwei0e0doIzUux4F2wLEUUZE9qtLIcmPcEJTI7AQjezD5Dse8fBK/LOYiU4NXuVIbgdTkxqJ5pCUDwWpsao3hTa7XjoxQLXvUZGx+jwiiiQQCCNxpU46tNCF6X8xkpwcvd0EtL4rJ7GVYdHt4MQ+35G0HwWptCKXitpsqy1qq3SkHwemu+YtlbCN5Y0vfGvSF4Xc5TJAWveswwPLwuJwbVMy0BVfB6LVY9I6FKTtpTmTKyD7G+FwRvrGfAO/ePR8ErD6aSOa9x0po7e4TgdccvZLlNLy2Znea9vMsUHl47M+3vslaO3PY3ocDoI5E+zOscIXi9PoMZ1/94FLxylUdms4HgdWdPELzu+EHw/sMPgtelIfmoOgSvjybb5VAheF0C9FF1KXjjaUUEgjeyBgzB65JnJEMa9E4Bctm9DKsOwZthqD1/Iwhez09hhg0AgjfDUHv+RhC8np/CqA8Agtcl4kgKXvk1x2fO9+yaKo7H9MoFweuVmYp9PyF4Yz8HXukBBK9XZir2/YTgjf0cZPYeQPC6nKFICl7uCosBvqyeHOSy+xGrDsEbMZRx3xAEb9xPccQGCMEbMZRx3xAEb9xPsesBQvC6RBhpweuyOzGrDsEbM/SeuzEEr+emLGYdhuCNGXrP3VhmNEAMr+emLsM6DMHrEjUEbwAgBK9LQ/JRdVXwDhlw0Ucjx1DtEoDgtUvMv+VlSCAEr39twGzkELxmhEz+DsELwevShHxXHYLXd1PueMAQvI7R+a4iBK/vptz2gCF4bSMLrQDBC8Hr0oR8Vx2C13dT7njAELyO0fmuohS8d9+VSnVrp8bF+JGWLLLTCMHrkicELwSvSxPyXXUIXt9NueMBQ/A6Rue7ilpxGA8AIHgjO4sQvC55QvBC8Lo0Id9Vh+D13ZQ7HjAEr2N0vqsIweu7Kbc9YAhe28gQ0qCHDJvWXBqSj6pD8Pposl0OFYLXJUAfVYfg9dFkOxwqBK9DcLIaPLzw8Lo0Id9Vl4I3R3aivn2QpcF3BmBjwBC8NmD5vCg/V/btzUp581+k8uUQw+tzc9AdPgSvS6uA4IXgdWlCvqxeIE82Srlwic6eu+TL8WPQ1ghA8FrjhFIBAvFmL4jhjaxlQ/C65AnBC8Hr0oR8WR2C15fTbnvQ8SZgbANABVsE4s1eIHhtTb9pYQheU0ThC0DwQvC6NCFfVofg9eW02x50vAkY2wBQwRaBeLMXGf4lD9Pg8eFyTgCC1zk7UROCF4LXpQn5sjoEry+n3fag403A2AaACrYIxJu9QPDamn7TwhC8pojg4bWCCFkarFBCGUkAghe2YIVAvAkYK2NGGecE4s1eIHid24JeTQhelzzh4YWH16UJ+bI6BK8vp932oONNwNgGgAq2CMSbvUDw2pp+08IQvKaI4OG1gggeXiuUUAYeXtiAHQLxJmDsjB1l7ROIN3uRgjd7jjTKmYNozOBs9qGgRpAABK9LY4CHFx5elybky+rw8Ppy2m0POt4EjG0AqGCLQLzZy7ETCfT2wix0+EiC4DBrQpItHigcSgCC16VFQPBC8Lo0IV9Wh+D15bTbHnS8CRjbAFDBFoF4tZcBQ7JC8NqyBP3CELwuIUrBy19i4yYkUv7kNOrR1X/J9BHS4NKQfFYdgtdnE+5wuPEqYBziQDUTAvFqL99uy0LHjqVR88dzwAZcEIDgdQGPq0rBqw0ud9ms56pD8HpuymLaYQjemOL3zM3jVcB4ZgI81tF4txfk4XVnkBC87vhB8P7DD4LXpSH5rDoEr88m3OFw413AOMSCagYE4t1eIHjdmT4Erzt+ELwQvC4tyJ/VIXj9Oe92Rx3vAsYuD5QPTyDe7QWC190vAILXBr8TJ09T3ty5KEuWwI5JvhDSEOAAD68NQ0JRguCFEVghEO8CxgoDlLFOIN7tBYLXui3olYTgtcBv3/4j1KnveDp45KgoPeKlNvTgvXdA8CrsIHgtGBKKBAlA8MIYrBCIdwFjhQHKWCcQ7/YCwWvdFiB4HbJq/+I4uvWma6ljqwa04+e91Oi5gfTlB1MoOW9ueHj/YQrB69C4fFoNgtenE29z2PEuYGziQHETAvFuLxC87n4C8PCa8Dtz9hzdWed52vDuBCpcMFmUbtNrND1Wqyo98mBlCF4IXne/QJ/WhuD16cTbHHa8CxibOFAcghc24IIABK8JvP8d/INqPdGbtq+fGyw5dNw8Kn5FIWrz5MMQvBC8Ln5+/q0KwevfubczcgheO7RQNt7tBR5edzYOwWvCb9fu36l5p+G0Zc30YMnXpi8RG9e6t21MbbpeCGnhhuuIundIdDcrHqydNTGB0tKILqWmebD36HJGE0hKTKDUtDS6lJrRd8b9vEQge1IWOncBRuKlOYtlX+PdXnh8uJwTgOA1YXfw8F/0QNOeIR7ewWPfpBLFi1DrJ+qmE7w3Xp9AL3QJHAOICwRAAARAAARAAARAIPYEIHhN5uDc+QtU4aHn6JMlY6l40YKi9NOdR1DTetVFDO9ff5+P/Sxmgh7kzpEovHUp5/13rHImwO+5LuTNmZXOX0yF985zM5exHS6ULxuesRmL3NN3i3d74fHhck4AgtcCu15DplHxooWox/ON6fsdv9KTHYbSF+9NpvzJeYIxvBaaiesiyNIQ19Mb8cEhhjfiSOOywXiPyYzLSYvhoOLdXhDD6864IHgt8Dvy53Hq3G8C/brvoCg9uFcrqluzkvj/8uAJC83EdREI3rie3ogPDoI34kjjssF4FzBxOWkxHFS82wsErzvjguC1we/kqTOUO1dO3ZPWbDQTl0UheONyWqM2KAjeqKGNq4bjXcDE1WRlgsHEu71A8LozMghed/zg4f2HHwSvS0PyWXUIXp9NuMPhxruAcYgF1QwIxLu9QPC6M30IXnf8IHgheF1akD+rQ/D6c97tjjreBYxdHigfnkC82wsEr7tfAASvO34QvBC8Li3In9UheP0573ZHHe8Cxi4PlIfghQ04JwDB65ydqIlNawGACGlwaUg+qw7B67MJdzhcCF6H4HxaLd7tBR5ed4YNweuOHwQvPLwuLcif1SF4/Tnvdkcd7wLGLg+Uh4cXNuCcAASvc3bw8Crs4OF1aUg+qw7B67MJdzhcCF6H4HxaLd7tBR5ed4YNweuOHzy88PC6tCB/Vofg9ee82x11vAsYuzxQHh5e2IBzAhC8ztnBwwsPr0vr8W91CF7/zr2dkUPw2qGFsvFuL/DwurNxCF53/ODhhYfXpQX5szoErz/n3e6o413A2OWB8vDwwgacE4Dgdc4OHl54eF1aj3+rQ/D6d+7tjByC1w4tlI13e4GH152NQ/C64wcPLzy8Li3In9UheP0573ZHHe8Cxi4PlIeHFzbgnAAEr3N28PDCw+vSevxbHYLXv3NvZ+QQvHZooWy82ws8vO5sHILXHT94eOHhdWlB/qwOwevPebc76ngXMHZ5oDw8vLAB5wQgeJ2zQ00QAAEQAAEQAAEQAAEPEIDg9cAkoYsgAAIgAAIgAAIgAALOCUDwOmeHmiAAAiAAAiAAAiAAAh4gAMHrgUmKZRe3bttFFy9dorsr3KzbjdNnUihXzuyUkJCQ7u9nzp6jpKyJlJSUNZZDwL0zIYFTp89Sntw5dXt24uRpyps7F2XJkt6mwg2F7Y1tEVfmJsDPkzmL1tAzjWtR9mxJup01so+0tDT6+9QZSs6b29YgU1PT6PyFC5QjezZb9VDYOwQuXUqlc+cv6D4D2ObOnbtAuXPlsDUgfr/lzJHd9rPI1k1QOMMIQPBmGOrMc6Ndu3+n5p2G05Y10007NXXuCko5d556PN8kpOy6z7+h115fTH/8dYLy5slJzerXoLbNHxVlzqacp5dGzKAvtvwo/vuphg9Q1zaPB0Xxjp/3UrcBk6nRI/fRc089Isp888N/6enOI9L1p82TD1P3to1N+4kC0SFwZ512tPj1gXTd1cVd30AKnRkLVoq2rilxBXVo+RjVuKe8+O99+49Qp77j6eCRo+K/R7zUhh68947gfVet20wvDJ1OCyb3o/K3lgr++wcffUnT5r1HJ0+doSuKFKSezzehynfc4rq/aMAegYUr1tF323+hkf2eD1uRRUmFh56jTSunUr48uYJlzezj86++px6DporyRQol0+QR3ULs0sg+xkxfTKvXbaYLFy5SmVLX0OBeraj4FYXsDQ6lI0bAqp1YveGxEyfptelL6MP1W0SVireVot4dnqDrr7lS/Dc/Gya/sZxy5cxBd5S7icYMaB8UvhcuXqKJs5bRG4tW0w+fzgkK2z+PnhDvqG9//JkK5s9LrZrVoWeb1bXaJZTLpAQgeDPpxESzW5EQvPxyufqqK6hs6ZK0/9Cf9FCzXrTmrZHi3+YuWUsbN22j10f1pDMp56hJ20E0oEcLuufOW2n1uq/olUkL6JoSxei+yuWCgpc9MBcuXgwOm//7sVb96OVuT1O1SrdFEwfaDkPglvtb0gfzXomI4OU5nbf0Q6pb824qWjg/fbRhK706+S36aNEYypqYSO1fHEe33nQtdWzVgPijqNFzA+nLD6YIb96IiQtoy3c7iV9EE4Z2oQplA4KXvbr3NexK8ya+JMTMh+v/Q1PmrKD35g7XXXXAZEePwNvL19F3P/5Mo/q3cyR4w9nHxYuXqNpjXWji0M7iY2bRe5/S8tWfi48xvozs4/ufdlPHvuNp7dujhaeO7S0xMZH6dHwieiDQclgCVu3EKsbjJ07RirX/pqb1a1BSUiKNnb6EeJVo+Itt6Iede6jDi2PpnZlDqHDBZOoz/HUqUbwIdXuukfhA5mdOcr7ctP7L70IE76y3V9Evv+2n/t2eobMp5+ipjsNoUM+W+JC2OimZtBwEbyadmGh2SxW8/HXcrN0QWr1gJCUmZhG3HTJuHlWueLPwrhl5eLX9Y49xy6a16YFqFYX3mJcrH7ov4J2b+dZK+t/BP4Rn5cddeyhfnty09IP1lC9vrqDg1bbH3pxh4+eH9CuaTNC2PgFV8HJ4y2uvLyEWESwue7VvKkJd2AvyzsoNYilxxdov6Kbr/0UtmtQK8c7qtc4rBxVrtaWNyycKMXJnnedpw7sTxIuJrza9RtNjtarSIw9WFi+ku8qXoWe6jKC+XZoHBS8vfVd6uD2tWzqWihUpSNzHfq/Oog8XjsaUZjABVcjw75c/il/t2zbYi3ot+oqP4IIF8ul6eLXdVe3jv7t/p6Hj54nnAV/ybx8vGkNXFitsaB+btm4X9VbOe1V476bPe58OHTlKg3q1zGA6uJ0koNoJf+Tw/Hyycav48yMPVqGe7ZqID+D573xEHFLw3faf6fOvfhArQfwxXPqGq8PC3Pz1T+ID6P03RwjP7t+nTotnBl/f/PAz9RoylT5dOo743h9v3EJ3V7yFqjzaMUTwsq326/Y0VSpfRtR7692P6cChv6h3h2aYSA8TgOD18OQ57boqeNljxh6y79e9ERS8XfpPpJpVK1L9WvdYEryyDRYuhQrkoxqNu9OUEd2EKOKLvW7LVm2kGaN7BbvMy4zsuZMhDdqxsNipWbUCPfFYTafDRL0IEFAF7+69B2jPvoNU7ubrhUeFQ1bmjn+RNn/zE7XuMUp85DzxWA0hOsfNWCqErF5st+zWhk3b6LXpi8WLiT+Iaj3Rm7avnxvs9dBx88TSM4e1yKvBsy9T/+4tgoKX/33i7GWiP80ff5AWLPuYXu76NNWoWiECo0cTdgioQoa994tWrKM3xvUJNsG2tOatUXRFkQKWBK9qHxy28tGGLTRpeNdge2wvr/ZrGxLeorUPDp9o32cspaalCZtZ9clmmj6yB5WMQIiOHTYoe5mA1sPLc1vquhIinrtdn7HCM8uhB+xsmTJ3BQ194VnxYT1r4WpKSTlHI156LixODm/g8Bj24vcf9QaVvuFf9FTDB0WdI38ep+qNuoW879gbrBW8/P55vO69VKdGJVFvxoIP6Nsff6Fpr3bHVHqYAASvhyfPadcjKXj5wdK530QqU+pq6tL6cdEl7TI4v7j44SWXH7lMOMHL/WvYuj99tWqa4cYmp2NHPXsE9EIa2KvK4vfJDkNp27rZQuCy4JXhB7x55O5HOtCi6QOCcXTau/7x13Fq2m4wDe71LFWrVJb0wmz4xcVeOTWGW0/wSnvhGL0SxQvT9JE9hajClbEEIil4tfahtwzOIS9d2zQS9hPug2j5ms/p5ZGzRZFHH6oiVpqMNstlLDF/3s0opIHF6Jhpi4T4ZUcIvzM+/eJbemfmYAFq5y/7xD6PcHtP+FnUfeBkWjpzsFjx4TjcqneVFftF+OINj5Uf6UD/WT09GMerJ3jZZia98a74iD9zJoXmLF5Ld1coE/LB5c/Z8/aoIXi9PX+Oem8meDv3m0AP3HuHJQ8ve+EOHP6LJg/vGvQQs4d30rCudMtN14r+cdzuirWfW/bw8suJvb9YPnI0vRGtpApe9tTPf+djOnD4TxGrzTG1UvAOGftmcLmZO6D18qudOnM2hVp1G0kP3ndH0Ht78PBf9EDTniEe3sFj3xTxdq2fuLxZRCt45eoCrx5UKHsjzXzrAxEu8+k740WGEFwZRyBSglfPPjg8gjee8cqRvNjDy/HCvOJgJHg5FOaVSW/RzDG9KEf27DR47FwRPsMbl3DFhoBqJ/zxzPPDQpVDXQ7/cZSaPFqd2j1TTwje439zOMJToqNyr4i6CqSOgD/COTzv9VE9xLOAr0Fj5tJ11xQXwpWvQ38cpZqNe4SEL+gJXi7LoVsfbdxKVxUrTMdOnKJjx/+mfl2fjg003DUiBCB4I4LRW42ogvfo8ZNU7bHOtHXtDMqZI5Cyh/+7V/tmpoKXv4D//dUPNOu13pRX2W39bPeR1OiR+6luzcBy0NQ33xMPMvasyMvIwyuXnOQGOG+Rjb/eSsFbpGAy1WjcQyzp8XIje1sebzMgKHjHTFsc9MQwBSPBy0vMvInoX1cWpQHdnwmGPMid+58sGUvFixYUINmb07RedRHDayRoVn68iRa//xnNn9RXFJHe5dmv9abbFCEUfzOT+UakChnO4jJr4SpaOLW/6Oi+/YepzlN9TEMajOyDs7i8NGJmMDabNytyzLeM4TWyj4Fj5lCxogWp/TP1RZFf9uyn+q36CbvlOFFcGU9AtRPeHPb19/+lCUM6UbZsScThdDeXujYoeNUMQeEEL/+tWbvB1KfjkyHPCw5F4KwvA3u0EAP96tsdIoMQx/DKy0jwqmT4ndagTjWxQoDLuwQgeL07d457rl0+rtu8j0gb9uC9d9KGzd9Rp74TRJxUuBhezqO5dOV6mjPuRbHLla/ELFlEzt0lH6yn9z/8QghhfjE1em4ADezRUmRlkJeR4OVNBrt278PSkePZjWxFKXizJWUVMbafr5gkcpmOmrJQzL/08FoRvJwCqMfAyZSUlETD+rQOpgDKmjVRiI9eQ6ZR8aKFqMfzjen7Hb+KkIkv3ptM+ZPzGAre3w8coYatB9DKea+IMIZtP+2mNj1H0+crJiLnamRNwbQ1VcjID1f+gMmfLw/Nenul2DAWLoY3nH3wzas/3o2GvtCa7q9yu8gEwx87crnbSPByfOiy1Rtp6ivdRRjD/GUfiZUJ1VNsOjAUiCgB1U44xpZT0/FqnszM0vnZhrYEL9va052HU4smtalh3WrBvmZLSqI9+w5Qs/ZDacWcYeL50GPQFLq2RLGQNJvhBC/nfV644lOa9uYKYltGKExETSHDG4PgzXDksb+hNhaKXxzsrWVvL+dGLVIoP9WpcRfVe8h40xoLIe3Fy0jsaeN8l+xZ+Xjj18TLky0a1xIeY/UgAY7P1GZp4K95Tj00aXgXw4MuYk/PXz1QQxqGT5gvsjDw9WSDmsQvrk0rp4jlSCuCl1MEsRdGe/HO6w4t6osNJRxO8+u+g6IIrwjIVQJZh+M2+3VtHrJRib1E767eKNIMXXlFYZEtRG428ddsxXa02thM/qhd/N5nolPVq9xOW7/fRW9OeImKFtbftGZmH+zl7dp/EqWcuyByo04c1kVkBFEvrX3wM4WzvWzY9J0odmvp66hL64bBDbWxJebPu6t2sn3Xb9R76DSRz53nlONt2T6ef/rRdBumjTy8/PEzeuqidDB5wyRnWeAMC+NnLhN/L3/rDTR6QPuQg0v0BC9vyO0/ajadPHVWpN7kD3TOBoLL2wQgeL09f456zwH5HI/Jm3vUiwWDGprgqHGlEh9AkTUx4PXF5T0Ce/93mNj7/81HM4OejYyYU7bD3Lly2j7diFMY2T1JyXuzknl73PeVmVSqZAmRpF9e7LXlHLoyXCoSvWeB4uSkNRa/OIkvEjPgrg09O+HNZOohJO7ukL623ZPWOGUZp+zMlzc39gJEejJi2B4EbwzhZ/St+Wua45c4pml0/3ZiaRAXCGgJ8DJe/Zb9hJ20alpbnIaGCwSMCCx5/zOavXC1+PPssS+IjYa4QEBLAHYCm4g1AQjeWM9ABt7//PkLtOf3Q1TyX8XEBgFcIGBEgHc8F8qfLyR+FrRAQI/Aib9Pi93vN15XAqfbwUQMCcBOYByxJgDBG+sZwP1BAARAAARAAARAAASiSgCCN6p40TgIgAAIgAAIgAAIgECsCUDwxnoGcH8QAAEQAAEQAAEQAIGoEoDgjSpeNA4CIAACIAACIAACIBBrAhC8sZ4B3B8EQAAEQAAEQAAEQCCqBCB4o4oXjYMACIAACIAACIAACMSaAARvrGcA9wcBEAABeKHlogAADUpJREFUEAABEAABEIgqAQjeqOJF4yAAAiAAAiAAAiAAArEmAMEb6xnA/UEABEAABEAABEAABKJKAII3qnjROAiAAAiAAAiAAAiAQKwJQPDGegZwfxAAARAAARAAARAAgagSgOCNKl40DgIgAAIgAAIgAAIgEGsCELyxngHcHwRAAARAAARAAARAIKoEIHijiheNgwAIgAAIgAAIgAAIxJoABG+sZwD3BwEQSEfgh517aMn7n9GOn/dS0/rVqViRQnTT9f+iooXzR53Wrt2/06VLl+jmG6+N+r0icYOTp85Q2xdeo5H92tLVV10RiSZdtfHWux/TH3+doG7PNXLVDiqDAAiAQCQJQPBGkibaAgEQcE0gLS2N7m3QhWpUrUAPVKtIxYoWpGe7j6R2z9Snpxo+4Kj93w8coZRz56lUyRKm9fu9Oov+PnmaJg3valo2MxQ4duIkVa3fmZbNGkKlb7jatEt2WJg2plNg5JSFtP/QHzRxaBcn1VEHBEAABKJCAII3KljRKAiAgFMC7GFt2Lo/bVw+kQoVyCeaOXDoTypUMJmyZ0ty1OzQcfOo+BWFqM2TD5vWP3HyNKWmplKB5LymZTNDAbuC1w4LJ+OD4HVCDXVAAASiTQCCN9qE0T4IgIBlAh+u/w9NmLWM9v7vMF1T4goqVCCZ5k/qS216jaam9arTg/feQRs2baOPNmyh2tUr0YRZ74iwh61rZ9DOX/bSwuXraNPX24VYLXfLDdTz+SY0Ze5yenv5OsqVMwcVKZQsPMe92jU17NPUuSuEN7jH803o4qVLNGP+B+Kev+47SBVvK0X1HqpKdWtWom9//Fn3fvmT81Cj5waKe1e+45bgfbr0n0g1q1ak+rXuEf/2w45fadTURbTzl31irJ2fbUj3VS5nymrPvoM0fOIC2rZ9t6jHXu+XR84OengPHv6LJr3xLm3+5ic6eeosVa9yO7VvUZ9KXl2chk+Yr8viwoWLos7KTzYR///7q5Sn3h2aUb48ucL2JzU1jWYvXEXvrNxAZ86mULVKt1FSUlZiEQ4Pr+lUogAIgEAGEoDgzUDYuBUIgEB4AizW1m/6joaNn09LZwwS4onDEGo07i4EYYM61Wj1uq9o4Jg5lCN7Ej3xWE2qUPZGKl+2lFjWf6z2PVS/dlU6cOgv+uW3/dT+mXr0694D1H3gFKpUoQw1rHsv5cubm64qVtiwI4PHvklnU87Rq33b0lvvfkLjZ75DYwd1pHx5c9G27b+I2N6yZa4zvF9CQgLdcn9LmjC0swjJkBeLYBa7Tzd6iA4eOUoPNOlBj9WuSo88UJk+/eIbIURXzBkWNuzi/PkLVLNJDypT6hrq2KqBEN2z315FR4+fDAreP4+eEB8NVe+6lfLlyS36f0vpkjSg+zO0+7f9uixGTFxAn3z+tWCcPVs28SHBYxwzoH3YCeM4a+Y1rE9rKlakIC1duZ4+XL+FalarAMGLHzsIgECmIgDBm6mmA50BARDYtHW78Oj++NkcYvHIl1bw9h46TQjSRx+qIv5+NuU83VG7LQ194VkharVX807D6f4qt1sKaVAF79Q336O1n35FC6a8HOLtNLufmeBlEbps1Qb6bNl4ypqYSOwprfRwe+GtDbfZ69N/f0OdX54YIow/3riVug2YbBjDu3zN5zRi4lu0Zc10gUXL4u9TZ6jyIx1C2Ekh+9WqaZQnd05Do6zXoi/dULIEjR3UIViG/+3aq4tB8OKnDAIgkKkIQPBmqulAZ0AABKwK3k0rp4aI0Flvr6JxM5YKj2/LJrWFwE1MzKIr8sJRVgXvoT+OUosurwgP6pMNalKz+jVELDBf4e5nJng795tAm7/ZQXeUuynYla3bdomQAFU8avs5d8lamjJnBW1eOTU4tn37j1Cdp14ICl4OSfh449f03fafiT3m7E3msI/t6+fqsvjpv79R47aDqPytpSjvPyEMR4/9TT/u2kPvzRlON5S8ShcXby68tXor6tf1acFGXrzp7+TpMxC8+CmDAAhkKgIQvJlqOtAZEAABK4L3lUkL6PMVk9LB4jjb+e98JFKa3Xl7aXpjbB/KkiUhnVfTquDlcufOX6CP1m+hafPeE7HF00f2pGqVyoomjO6nJ3jrNu8jQjA4pKFt7zFCRLdqViekKxwWUPG2Gw27N/OtlTRv6YchYz/y53Gq3qhbUPBy2yxwH3/4PrqtzHW0e+8BEdZgJHg5LIK9vl1aP04lriwScu+qd5Wl5Ly5dfvD8c3larYW4QwcaiIv3hT3x9HjELz4KYMACGQqAhC8mWo60BkQAAE3glfSk5keFkzuJzyXLOjuuetWav9MfVPAqodXLcwC78XhM+j436do1pjeIe1o73dnnXbUvW3joOeTN8FVrNWWXuz0pBC8HDO7fM2/adPKKSKkweq1at1memHodPpk8WtBT/M3P/xMT3ceLgRvcr48IjZ4VP929HDNu0WzY6YvpjmL1oQIXpUFx/ze17BrOk+tlT5xqMm9lcrRoF4tg8U5HCVXzuwQvFYAogwIgECGEYDgzTDUuBEIgIAVAk4EL8fUfrJxK1WtVJZy58xBX27dTh37jqdF0wdS2dIlafTURcQhAzPG9KKc2bNRtjDpzVTBy5kO2MN5w7VX0bETp+jlkbMoMTFRbGILd7+W3V6ls2fP0Sv92oqsB+yVXbH230HBKwVyo0fuE2ESuXPloB93/kY3XlfCMISA2Z34+zRVqdeRat1/F3V+toE44GHi7GVi8xoL3uuvuZKq1OtErZrWpuaNHqIt3+6kF0fMEBkUpIdXj0WPQVPou+2/UNc2jahyxVuIc/Xu2384xHOrN3dT5iynuUs+FBvi7ixfmtZ+9h/BGpvWrFg6yoAACGQkAQjejKSNe4EACJgS2Pz1T9S656iQTWu1nuhN7Z6pF8zSoA1pOH0mhZp3Gkb//fV/on1O19Xk0erUsmlt8d8sMDm2lJf6ObZ3yohuhv1QBS+HRoyetlgIRr5q3BNI18Xp0sLdj+NiOYzgiy0/inq8uY7jYjnt2FMNHxT/xhvQhk2YT4f/OCb+m9OmTX2lmwjFCHdxmy8Of12ERPDVs10Tmvbm+8TebD6NbtmqjTR+5lLx94L581Kfjk9Sn+GvBwWvHgsW0iMmLaCVH28K3ppTwI0f0ilsX5gL85L1br2pJFW47UYRO2xW19QQUAAEQAAEIkgAgjeCMNEUCIBAbAnwoRGURpScTz/ulEVg3tw5RbozqxeHMhw9dpIK5M9LSVlDww/M7scZEPiwjHAHZnAbaalpIl0axxtbvTjXLacdkxvz1Hqc9YFPi+OcwEaXHgse6zFmlCcX5ciezWpXRN5i9mTLTW+WK6IgCIAACGQQAQjeDAKN24AACGQOAnyIBIcm6F3LZg2looXzx7SjfAAEe5a1V4kri9LCqf0ztG8siuu37Kt7z0E9W4nQBVwgAAIg4AUCELxemCX0EQRAIGIEzpw9R7xRS++6slghW5vIItYppSH23PIJadqLvdLFixaMxi0N27x0KZX2H/pT9++FC+YTYRi4QAAEQMALBCB4vTBL6CMIgAAIgAAIgAAIgIBjAhC8jtGhIgiAAAiAAAiAAAiAgBcIQPB6YZbQRxAAARAAARAAARAAAccEIHgdo0NFEAABEAABEAABEAABLxCA4PXCLKGPIAACIAACIAACIAACjglA8DpGh4ogAAIgAAIgAAIgAAJeIADB64VZQh9BAARAAARAAARAAAQcE4DgdYwOFUEABEAABEAABEAABLxAAILXC7OEPoIACIAACIAACIAACDgmAMHrGB0qggAIgAAIgAAIgAAIeIEABK8XZgl9BAEQAAEQAAEQAAEQcEwAgtcxOlQEARAAARAAARAAARDwAgEIXi/MEvoIAiAAAiAAAiAAAiDgmAAEr2N0qAgCIAACIAACIAACIOAFAhC8Xpgl9BEEQAAEQAAEQAAEQMAxAQhex+hQEQRAAARAAARAAARAwAsEIHi9MEvoIwiAAAiAAAiAAAiAgGMCELyO0aEiCIAACIAACIAACICAFwhA8HphltBHEAABEAABEAABEAABxwQgeB2jQ0UQAAEQAAEQAAEQAAEvEIDg9cIsoY8gAAIgAAIgAAIgAAKOCUDwOkaHiiAAAiAAAiAAAiAAAl4gAMHrhVlCH0EABEAABEAABEAABBwTgOB1jA4VQQAEQAAEQAAEQAAEvEAAgtcLs4Q+ggAIgAAIgAAIgAAIOCYAwesYHSqCAAiAAAiAAAiAAAh4gQAErxdmCX0EARAAARAAARAAARBwTACC1zE6VAQBEAABEAABEAABEPACAQheL8wS+ggCIAACIAACIAACIOCYAASvY3SoCAIgAAIgAAIgAAIg4AUCELxemCX0EQRAAARAAARAAARAwDEBCF7H6FARBEAABEAABEAABEDACwQgeL0wS+gjCIAACIAACIAACICAYwIQvI7RoSIIgAAIgAAIgAAIgIAXCEDwemGW0EcQAAEQAAEQAAEQAAHHBCB4HaNDRRAAARAAARAAARAAAS8Q+D/Spw1Zs0oD+wAAAABJRU5ErkJggg=="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "### first_issue_date\n",
    "\n",
    "clients['first_issue_date'] = pd.to_datetime(clients['first_issue_date'])\n",
    "clients['first_issue_date_d'] = clients['first_issue_date'].dt.date\n",
    "clients_issues_dates = pd.DataFrame(clients.groupby('first_issue_date_d').size()).\\\n",
    "reset_index().rename(columns = {0: 'Number of clients'})\n",
    "\n",
    "fig = px.line(clients_issues_dates, x = 'first_issue_date_d', y = 'Number of clients')\n",
    "fig.show('png')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8ee096ef",
   "metadata": {},
   "source": [
    "### Purchases"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "440c0b7a",
   "metadata": {},
   "source": [
    "Purchases dataset present information about customer transactions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "102d15b2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>client_id</th>\n",
       "      <th>transaction_id</th>\n",
       "      <th>transaction_datetime</th>\n",
       "      <th>regular_points_received</th>\n",
       "      <th>express_points_received</th>\n",
       "      <th>regular_points_spent</th>\n",
       "      <th>express_points_spent</th>\n",
       "      <th>purchase_sum</th>\n",
       "      <th>store_id</th>\n",
       "      <th>product_id</th>\n",
       "      <th>product_quantity</th>\n",
       "      <th>trn_sum_from_iss</th>\n",
       "      <th>trn_sum_from_red</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>000012768d</td>\n",
       "      <td>7e3e2e3984</td>\n",
       "      <td>2018-12-01 07:12:45</td>\n",
       "      <td>10.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>1007.000</td>\n",
       "      <td>54a4a11a29</td>\n",
       "      <td>9a80204f78</td>\n",
       "      <td>2.000</td>\n",
       "      <td>80.000</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>000012768d</td>\n",
       "      <td>7e3e2e3984</td>\n",
       "      <td>2018-12-01 07:12:45</td>\n",
       "      <td>10.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>1007.000</td>\n",
       "      <td>54a4a11a29</td>\n",
       "      <td>da89ebd374</td>\n",
       "      <td>1.000</td>\n",
       "      <td>65.000</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>000012768d</td>\n",
       "      <td>7e3e2e3984</td>\n",
       "      <td>2018-12-01 07:12:45</td>\n",
       "      <td>10.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>1007.000</td>\n",
       "      <td>54a4a11a29</td>\n",
       "      <td>0a95e1151d</td>\n",
       "      <td>1.000</td>\n",
       "      <td>24.000</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>000012768d</td>\n",
       "      <td>7e3e2e3984</td>\n",
       "      <td>2018-12-01 07:12:45</td>\n",
       "      <td>10.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>1007.000</td>\n",
       "      <td>54a4a11a29</td>\n",
       "      <td>4055b15e4a</td>\n",
       "      <td>2.000</td>\n",
       "      <td>50.000</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>000012768d</td>\n",
       "      <td>7e3e2e3984</td>\n",
       "      <td>2018-12-01 07:12:45</td>\n",
       "      <td>10.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>1007.000</td>\n",
       "      <td>54a4a11a29</td>\n",
       "      <td>a685f1916b</td>\n",
       "      <td>1.000</td>\n",
       "      <td>22.000</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    client_id transaction_id transaction_datetime  regular_points_received  \\\n",
       "0  000012768d     7e3e2e3984  2018-12-01 07:12:45                   10.000   \n",
       "1  000012768d     7e3e2e3984  2018-12-01 07:12:45                   10.000   \n",
       "2  000012768d     7e3e2e3984  2018-12-01 07:12:45                   10.000   \n",
       "3  000012768d     7e3e2e3984  2018-12-01 07:12:45                   10.000   \n",
       "4  000012768d     7e3e2e3984  2018-12-01 07:12:45                   10.000   \n",
       "\n",
       "   express_points_received  regular_points_spent  express_points_spent  \\\n",
       "0                    0.000                 0.000                 0.000   \n",
       "1                    0.000                 0.000                 0.000   \n",
       "2                    0.000                 0.000                 0.000   \n",
       "3                    0.000                 0.000                 0.000   \n",
       "4                    0.000                 0.000                 0.000   \n",
       "\n",
       "   purchase_sum    store_id  product_id  product_quantity  trn_sum_from_iss  \\\n",
       "0      1007.000  54a4a11a29  9a80204f78             2.000            80.000   \n",
       "1      1007.000  54a4a11a29  da89ebd374             1.000            65.000   \n",
       "2      1007.000  54a4a11a29  0a95e1151d             1.000            24.000   \n",
       "3      1007.000  54a4a11a29  4055b15e4a             2.000            50.000   \n",
       "4      1007.000  54a4a11a29  a685f1916b             1.000            22.000   \n",
       "\n",
       "   trn_sum_from_red  \n",
       "0               NaN  \n",
       "1               NaN  \n",
       "2               NaN  \n",
       "3               NaN  \n",
       "4               NaN  "
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "purchases.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "968d7679",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>regular_points_received</th>\n",
       "      <th>express_points_received</th>\n",
       "      <th>regular_points_spent</th>\n",
       "      <th>express_points_spent</th>\n",
       "      <th>purchase_sum</th>\n",
       "      <th>product_quantity</th>\n",
       "      <th>trn_sum_from_iss</th>\n",
       "      <th>trn_sum_from_red</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>45786568.000</td>\n",
       "      <td>45786568.000</td>\n",
       "      <td>45786568.000</td>\n",
       "      <td>45786568.000</td>\n",
       "      <td>45786568.000</td>\n",
       "      <td>45786568.000</td>\n",
       "      <td>45786568.000</td>\n",
       "      <td>3043356.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>8.050</td>\n",
       "      <td>0.061</td>\n",
       "      <td>-5.313</td>\n",
       "      <td>-0.318</td>\n",
       "      <td>777.521</td>\n",
       "      <td>1.247</td>\n",
       "      <td>73.488</td>\n",
       "      <td>76.774</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>12.685</td>\n",
       "      <td>2.426</td>\n",
       "      <td>36.036</td>\n",
       "      <td>3.288</td>\n",
       "      <td>796.535</td>\n",
       "      <td>3.138</td>\n",
       "      <td>87.540</td>\n",
       "      <td>84.271</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>-5066.000</td>\n",
       "      <td>-300.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.400</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>286.000</td>\n",
       "      <td>1.000</td>\n",
       "      <td>30.000</td>\n",
       "      <td>31.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>3.800</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>539.000</td>\n",
       "      <td>1.000</td>\n",
       "      <td>51.000</td>\n",
       "      <td>55.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>10.300</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>976.000</td>\n",
       "      <td>1.000</td>\n",
       "      <td>90.000</td>\n",
       "      <td>95.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>2399.000</td>\n",
       "      <td>300.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>35149.040</td>\n",
       "      <td>14941.000</td>\n",
       "      <td>35149.000</td>\n",
       "      <td>8789.000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       regular_points_received  express_points_received  regular_points_spent  \\\n",
       "count             45786568.000             45786568.000          45786568.000   \n",
       "mean                     8.050                    0.061                -5.313   \n",
       "std                     12.685                    2.426                36.036   \n",
       "min                      0.000                    0.000             -5066.000   \n",
       "25%                      1.400                    0.000                 0.000   \n",
       "50%                      3.800                    0.000                 0.000   \n",
       "75%                     10.300                    0.000                 0.000   \n",
       "max                   2399.000                  300.000                 0.000   \n",
       "\n",
       "       express_points_spent  purchase_sum  product_quantity  trn_sum_from_iss  \\\n",
       "count          45786568.000  45786568.000      45786568.000      45786568.000   \n",
       "mean                 -0.318       777.521             1.247            73.488   \n",
       "std                   3.288       796.535             3.138            87.540   \n",
       "min                -300.000         0.000             0.000             0.000   \n",
       "25%                   0.000       286.000             1.000            30.000   \n",
       "50%                   0.000       539.000             1.000            51.000   \n",
       "75%                   0.000       976.000             1.000            90.000   \n",
       "max                   0.000     35149.040         14941.000         35149.000   \n",
       "\n",
       "       trn_sum_from_red  \n",
       "count       3043356.000  \n",
       "mean             76.774  \n",
       "std              84.271  \n",
       "min               0.000  \n",
       "25%              31.000  \n",
       "50%              55.000  \n",
       "75%              95.000  \n",
       "max            8789.000  "
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "purchases.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "abef56e9",
   "metadata": {},
   "source": [
    "Seems like our dataset structure is row per client/transaction_id/product_id."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0586e9e6",
   "metadata": {},
   "source": [
    "### train/treatment/target dataset"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "eac8db80",
   "metadata": {},
   "source": [
    "Treatment and target presents only for train part of the dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "31d25d57",
   "metadata": {},
   "outputs": [],
   "source": [
    "train['treatment'] = treatment\n",
    "train['target'] = target"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "4eded387",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>client_id</th>\n",
       "      <th>first_issue_date</th>\n",
       "      <th>first_redeem_date</th>\n",
       "      <th>age</th>\n",
       "      <th>gender</th>\n",
       "      <th>first_issue_date_d</th>\n",
       "      <th>treatment</th>\n",
       "      <th>target</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>000012768d</td>\n",
       "      <td>2017-08-05 15:40:48</td>\n",
       "      <td>2018-01-04 19:30:07</td>\n",
       "      <td>45</td>\n",
       "      <td>U</td>\n",
       "      <td>2017-08-05</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>000036f903</td>\n",
       "      <td>2017-04-10 13:54:23</td>\n",
       "      <td>2017-04-23 12:37:56</td>\n",
       "      <td>72</td>\n",
       "      <td>F</td>\n",
       "      <td>2017-04-10</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>00010925a5</td>\n",
       "      <td>2018-07-24 16:21:29</td>\n",
       "      <td>2018-09-14 16:12:49</td>\n",
       "      <td>83</td>\n",
       "      <td>U</td>\n",
       "      <td>2018-07-24</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0001f552b0</td>\n",
       "      <td>2017-06-30 19:20:38</td>\n",
       "      <td>2018-08-28 12:59:45</td>\n",
       "      <td>33</td>\n",
       "      <td>F</td>\n",
       "      <td>2017-06-30</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>00020e7b18</td>\n",
       "      <td>2017-11-27 11:41:45</td>\n",
       "      <td>2018-01-10 17:50:05</td>\n",
       "      <td>73</td>\n",
       "      <td>U</td>\n",
       "      <td>2017-11-27</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>200034</th>\n",
       "      <td>fffe0abb97</td>\n",
       "      <td>2017-11-27 08:56:54</td>\n",
       "      <td>2018-02-11 09:26:08</td>\n",
       "      <td>35</td>\n",
       "      <td>F</td>\n",
       "      <td>2017-11-27</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>200035</th>\n",
       "      <td>fffe0ed719</td>\n",
       "      <td>2017-09-15 08:53:24</td>\n",
       "      <td>2017-12-12 14:50:12</td>\n",
       "      <td>69</td>\n",
       "      <td>U</td>\n",
       "      <td>2017-09-15</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>200036</th>\n",
       "      <td>fffea1204c</td>\n",
       "      <td>2018-01-31 16:59:37</td>\n",
       "      <td>2018-03-12 17:02:27</td>\n",
       "      <td>73</td>\n",
       "      <td>F</td>\n",
       "      <td>2018-01-31</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>200037</th>\n",
       "      <td>fffeca6d22</td>\n",
       "      <td>2017-12-28 11:56:13</td>\n",
       "      <td>NaN</td>\n",
       "      <td>77</td>\n",
       "      <td>F</td>\n",
       "      <td>2017-12-28</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>200038</th>\n",
       "      <td>fffff6ce77</td>\n",
       "      <td>2017-08-03 20:25:12</td>\n",
       "      <td>2017-08-26 16:41:41</td>\n",
       "      <td>42</td>\n",
       "      <td>U</td>\n",
       "      <td>2017-08-03</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>200039 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         client_id    first_issue_date    first_redeem_date  age gender  \\\n",
       "0       000012768d 2017-08-05 15:40:48  2018-01-04 19:30:07   45      U   \n",
       "1       000036f903 2017-04-10 13:54:23  2017-04-23 12:37:56   72      F   \n",
       "2       00010925a5 2018-07-24 16:21:29  2018-09-14 16:12:49   83      U   \n",
       "3       0001f552b0 2017-06-30 19:20:38  2018-08-28 12:59:45   33      F   \n",
       "4       00020e7b18 2017-11-27 11:41:45  2018-01-10 17:50:05   73      U   \n",
       "...            ...                 ...                  ...  ...    ...   \n",
       "200034  fffe0abb97 2017-11-27 08:56:54  2018-02-11 09:26:08   35      F   \n",
       "200035  fffe0ed719 2017-09-15 08:53:24  2017-12-12 14:50:12   69      U   \n",
       "200036  fffea1204c 2018-01-31 16:59:37  2018-03-12 17:02:27   73      F   \n",
       "200037  fffeca6d22 2017-12-28 11:56:13                  NaN   77      F   \n",
       "200038  fffff6ce77 2017-08-03 20:25:12  2017-08-26 16:41:41   42      U   \n",
       "\n",
       "       first_issue_date_d  treatment  target  \n",
       "0              2017-08-05          0       1  \n",
       "1              2017-04-10          1       1  \n",
       "2              2018-07-24          1       1  \n",
       "3              2017-06-30          1       1  \n",
       "4              2017-11-27          1       1  \n",
       "...                   ...        ...     ...  \n",
       "200034         2017-11-27          0       0  \n",
       "200035         2017-09-15          0       1  \n",
       "200036         2018-01-31          0       1  \n",
       "200037         2017-12-28          1       0  \n",
       "200038         2017-08-03          0       1  \n",
       "\n",
       "[200039 rows x 8 columns]"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_df = clients.merge(train,how = 'right', on = 'client_id')\n",
    "train_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "ae4c4694",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>target</th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>treatment</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>19.844</td>\n",
       "      <td>30.176</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>18.167</td>\n",
       "      <td>31.813</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "target         0      1\n",
       "treatment              \n",
       "0         19.844 30.176\n",
       "1         18.167 31.813"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "100*(pd.crosstab(train_df['treatment'],train_df['target'])/train_df.shape[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "10d4fb9c",
   "metadata": {},
   "source": [
    "So as we see above treatment and control groups are almost equal and also proportion of target in both groups is almost the same."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "94ef6c5e",
   "metadata": {},
   "source": [
    "## Data processing"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "27c67b63",
   "metadata": {},
   "source": [
    "Make some data processing before uplift modeling."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "aaacec5d",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Extracting features from client data\n",
    "\n",
    "train_df['first_issue_time'] = \\\n",
    "    (pd.to_datetime(train_df['first_issue_date'])\n",
    "     - pd.Timestamp('1970-01-01')) // pd.Timedelta('1s')\n",
    "\n",
    "train_df['first_redeem_time'] = \\\n",
    "    (pd.to_datetime(train_df['first_redeem_date'])\n",
    "     - pd.Timestamp('1970-01-01')) // pd.Timedelta('1s')\n",
    "\n",
    "train_df['issue_redeem_delay'] = train_df['first_redeem_time'] \\\n",
    "    - train_df['first_issue_time']\n",
    "\n",
    "\n",
    "### Count number of transactions/products from purchases dataset\n",
    "\n",
    "purchases_train = purchases.merge(train,how = 'right', on = 'client_id')\n",
    "purchases_features = purchases_train.groupby('client_id')[['transaction_id','product_id']].nunique().reset_index()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "cbf53815",
   "metadata": {},
   "outputs": [],
   "source": [
    "train_df_purchases = train_df.merge(purchases_features, how = 'left', on = 'client_id')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "425eba62",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>client_id</th>\n",
       "      <th>first_issue_date</th>\n",
       "      <th>first_redeem_date</th>\n",
       "      <th>age</th>\n",
       "      <th>gender</th>\n",
       "      <th>first_issue_date_d</th>\n",
       "      <th>treatment</th>\n",
       "      <th>target</th>\n",
       "      <th>first_issue_time</th>\n",
       "      <th>first_redeem_time</th>\n",
       "      <th>issue_redeem_delay</th>\n",
       "      <th>transaction_id</th>\n",
       "      <th>product_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>000012768d</td>\n",
       "      <td>2017-08-05 15:40:48</td>\n",
       "      <td>2018-01-04 19:30:07</td>\n",
       "      <td>45</td>\n",
       "      <td>U</td>\n",
       "      <td>2017-08-05</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1501947648</td>\n",
       "      <td>1515094207.000</td>\n",
       "      <td>13146559.000</td>\n",
       "      <td>4</td>\n",
       "      <td>46</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>000036f903</td>\n",
       "      <td>2017-04-10 13:54:23</td>\n",
       "      <td>2017-04-23 12:37:56</td>\n",
       "      <td>72</td>\n",
       "      <td>F</td>\n",
       "      <td>2017-04-10</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1491832463</td>\n",
       "      <td>1492951076.000</td>\n",
       "      <td>1118613.000</td>\n",
       "      <td>32</td>\n",
       "      <td>96</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>00010925a5</td>\n",
       "      <td>2018-07-24 16:21:29</td>\n",
       "      <td>2018-09-14 16:12:49</td>\n",
       "      <td>83</td>\n",
       "      <td>U</td>\n",
       "      <td>2018-07-24</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1532449289</td>\n",
       "      <td>1536941569.000</td>\n",
       "      <td>4492280.000</td>\n",
       "      <td>18</td>\n",
       "      <td>58</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0001f552b0</td>\n",
       "      <td>2017-06-30 19:20:38</td>\n",
       "      <td>2018-08-28 12:59:45</td>\n",
       "      <td>33</td>\n",
       "      <td>F</td>\n",
       "      <td>2017-06-30</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1498850438</td>\n",
       "      <td>1535461185.000</td>\n",
       "      <td>36610747.000</td>\n",
       "      <td>15</td>\n",
       "      <td>79</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>00020e7b18</td>\n",
       "      <td>2017-11-27 11:41:45</td>\n",
       "      <td>2018-01-10 17:50:05</td>\n",
       "      <td>73</td>\n",
       "      <td>U</td>\n",
       "      <td>2017-11-27</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1511782905</td>\n",
       "      <td>1515606605.000</td>\n",
       "      <td>3823700.000</td>\n",
       "      <td>18</td>\n",
       "      <td>175</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>200034</th>\n",
       "      <td>fffe0abb97</td>\n",
       "      <td>2017-11-27 08:56:54</td>\n",
       "      <td>2018-02-11 09:26:08</td>\n",
       "      <td>35</td>\n",
       "      <td>F</td>\n",
       "      <td>2017-11-27</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1511773014</td>\n",
       "      <td>1518341168.000</td>\n",
       "      <td>6568154.000</td>\n",
       "      <td>9</td>\n",
       "      <td>36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>200035</th>\n",
       "      <td>fffe0ed719</td>\n",
       "      <td>2017-09-15 08:53:24</td>\n",
       "      <td>2017-12-12 14:50:12</td>\n",
       "      <td>69</td>\n",
       "      <td>U</td>\n",
       "      <td>2017-09-15</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1505465604</td>\n",
       "      <td>1513090212.000</td>\n",
       "      <td>7624608.000</td>\n",
       "      <td>30</td>\n",
       "      <td>89</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>200036</th>\n",
       "      <td>fffea1204c</td>\n",
       "      <td>2018-01-31 16:59:37</td>\n",
       "      <td>2018-03-12 17:02:27</td>\n",
       "      <td>73</td>\n",
       "      <td>F</td>\n",
       "      <td>2018-01-31</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1517417977</td>\n",
       "      <td>1520874147.000</td>\n",
       "      <td>3456170.000</td>\n",
       "      <td>17</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>200037</th>\n",
       "      <td>fffeca6d22</td>\n",
       "      <td>2017-12-28 11:56:13</td>\n",
       "      <td>NaN</td>\n",
       "      <td>77</td>\n",
       "      <td>F</td>\n",
       "      <td>2017-12-28</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1514462173</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>16</td>\n",
       "      <td>34</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>200038</th>\n",
       "      <td>fffff6ce77</td>\n",
       "      <td>2017-08-03 20:25:12</td>\n",
       "      <td>2017-08-26 16:41:41</td>\n",
       "      <td>42</td>\n",
       "      <td>U</td>\n",
       "      <td>2017-08-03</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1501791912</td>\n",
       "      <td>1503765701.000</td>\n",
       "      <td>1973789.000</td>\n",
       "      <td>32</td>\n",
       "      <td>137</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>200039 rows × 13 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         client_id    first_issue_date    first_redeem_date  age gender  \\\n",
       "0       000012768d 2017-08-05 15:40:48  2018-01-04 19:30:07   45      U   \n",
       "1       000036f903 2017-04-10 13:54:23  2017-04-23 12:37:56   72      F   \n",
       "2       00010925a5 2018-07-24 16:21:29  2018-09-14 16:12:49   83      U   \n",
       "3       0001f552b0 2017-06-30 19:20:38  2018-08-28 12:59:45   33      F   \n",
       "4       00020e7b18 2017-11-27 11:41:45  2018-01-10 17:50:05   73      U   \n",
       "...            ...                 ...                  ...  ...    ...   \n",
       "200034  fffe0abb97 2017-11-27 08:56:54  2018-02-11 09:26:08   35      F   \n",
       "200035  fffe0ed719 2017-09-15 08:53:24  2017-12-12 14:50:12   69      U   \n",
       "200036  fffea1204c 2018-01-31 16:59:37  2018-03-12 17:02:27   73      F   \n",
       "200037  fffeca6d22 2017-12-28 11:56:13                  NaN   77      F   \n",
       "200038  fffff6ce77 2017-08-03 20:25:12  2017-08-26 16:41:41   42      U   \n",
       "\n",
       "       first_issue_date_d  treatment  target  first_issue_time  \\\n",
       "0              2017-08-05          0       1        1501947648   \n",
       "1              2017-04-10          1       1        1491832463   \n",
       "2              2018-07-24          1       1        1532449289   \n",
       "3              2017-06-30          1       1        1498850438   \n",
       "4              2017-11-27          1       1        1511782905   \n",
       "...                   ...        ...     ...               ...   \n",
       "200034         2017-11-27          0       0        1511773014   \n",
       "200035         2017-09-15          0       1        1505465604   \n",
       "200036         2018-01-31          0       1        1517417977   \n",
       "200037         2017-12-28          1       0        1514462173   \n",
       "200038         2017-08-03          0       1        1501791912   \n",
       "\n",
       "        first_redeem_time  issue_redeem_delay  transaction_id  product_id  \n",
       "0          1515094207.000        13146559.000               4          46  \n",
       "1          1492951076.000         1118613.000              32          96  \n",
       "2          1536941569.000         4492280.000              18          58  \n",
       "3          1535461185.000        36610747.000              15          79  \n",
       "4          1515606605.000         3823700.000              18         175  \n",
       "...                   ...                 ...             ...         ...  \n",
       "200034     1518341168.000         6568154.000               9          36  \n",
       "200035     1513090212.000         7624608.000              30          89  \n",
       "200036     1520874147.000         3456170.000              17          45  \n",
       "200037                NaN                 NaN              16          34  \n",
       "200038     1503765701.000         1973789.000              32         137  \n",
       "\n",
       "[200039 rows x 13 columns]"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_df_purchases"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ee90ffac",
   "metadata": {},
   "source": [
    "### train/validation split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "25945762",
   "metadata": {},
   "outputs": [],
   "source": [
    "### Selected columns \n",
    "\n",
    "selected_features = ['age','gender','first_issue_time','first_redeem_time','issue_redeem_delay',\n",
    "                     'transaction_id','product_id','treatment']\n",
    "y = train_df_purchases['target']\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "1bc58728",
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_val, y_train, y_val = train_test_split(train_df_purchases[selected_features],y,\n",
    "                                                  test_size=0.3, random_state=123)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "1bc884a8",
   "metadata": {},
   "outputs": [],
   "source": [
    "treatment_train = X_train['treatment']\n",
    "treatment_val = X_val['treatment']\n",
    "\n",
    "X_train = X_train.drop(columns = ['treatment'])\n",
    "X_val = X_val.drop(columns = ['treatment'])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "858d89ee",
   "metadata": {},
   "source": [
    "## Model"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5892989f",
   "metadata": {},
   "source": [
    "We will use simple SoloModel, for more complicated models please look at [models guide](https://www.uplift-modeling.com/en/latest/user_guide/models/index.html)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "07b48079",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Learning rate set to 0.08499\n",
      "0:\tlearn: 0.6704391\ttotal: 195ms\tremaining: 3m 15s\n",
      "100:\tlearn: 0.5483643\ttotal: 9.53s\tremaining: 1m 24s\n",
      "200:\tlearn: 0.5448690\ttotal: 17.6s\tremaining: 1m 10s\n",
      "300:\tlearn: 0.5421207\ttotal: 26.2s\tremaining: 1m\n",
      "400:\tlearn: 0.5397941\ttotal: 33.7s\tremaining: 50.3s\n",
      "500:\tlearn: 0.5375020\ttotal: 41.4s\tremaining: 41.3s\n",
      "600:\tlearn: 0.5353400\ttotal: 49.5s\tremaining: 32.9s\n",
      "700:\tlearn: 0.5332216\ttotal: 57.6s\tremaining: 24.6s\n",
      "800:\tlearn: 0.5312421\ttotal: 1m 5s\tremaining: 16.2s\n",
      "900:\tlearn: 0.5294681\ttotal: 1m 12s\tremaining: 8.02s\n",
      "999:\tlearn: 0.5277310\ttotal: 1m 21s\tremaining: 0us\n"
     ]
    }
   ],
   "source": [
    "estimator = CatBoostClassifier(verbose=100, \n",
    "                               cat_features=['gender'],\n",
    "                               random_state=42,\n",
    "                               thread_count=1)\n",
    "\n",
    "sm = SoloModel(estimator)\n",
    "sm = sm.fit(X_train, y_train, treatment_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "9aff558a",
   "metadata": {},
   "outputs": [],
   "source": [
    "## Let's make predict and calculate uplift score \n",
    "uplift_sm = sm.predict(X_val)\n",
    "sm_score = uplift_at_k(y_true=y_val, uplift=uplift_sm, treatment=treatment_val, strategy='overall', k=0.1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "70da39bd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.09103971954830925"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sm_score"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dcbcb3e7",
   "metadata": {},
   "source": [
    "Thank you for reading! For more tutorials on uplift modeling please visit this [page](https://www.uplift-modeling.com/en/latest/tutorials.html) ."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2ed7486d",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
